无涯教程-Swift - 读取数据

100 阅读2分钟

从UserDefaults获取数据非常简单。以下方法用作UserDefaults中的getter方法。

SN Method Description
1 func object(forKey: String) -> Any? 它返回与指定键关联的对象。
2 func url(forKey: String) -> URL? 它返回与指定键关联的URL。
3 func array(forKey: String) -> [Any]? 它返回与指定键关联的数组。
4 func dictionary(forKey: String) -> [String : Any]? 它返回与指定键关联的字典。
5 func string(forKey: String) -> String? 它返回与指定键关联的字符串。
6 func stringArray(forKey: String) -> [String]? 它返回与指定键关联的字符串数组。
7 func data(forKey: String) -> Data? 它返回与指定键关联的二进制数据。
8 func bool(forKey: String) -> Bool 它返回与指定键关联的布尔值。
9 func integer(forKey: String) -> Int 它返回与指定键关联的整数值。
10 func float(forKey: String) -> Float 它返回与指定键关联的浮点值。
11 func double(forKey: String) -> Double 它返回与指定键关联的双精度值。
12 func dictionaryRepresentation() -> [String : Any] 它返回UserDefualts的字典表示形式。

由于UserDefaults使用数据类型来检索与键关联的存储值。但是指定键的值可能不存在。因此在从UserDefaults检索值时,无涯教程需要使用可选绑定。

if let token = UserDefaults.standard.string(forKey: "userToken"){
   debugPrint(token)
}

在实时项目中,无涯教程在单例Shared Preference类中使用UserDefaults。让无涯教程考虑以下示例,在该示例中,无涯教程创建一个显式的SharedPreferenceManager类,并将所有与用户默认值相关的代码放在此处。

SharedPreferenceManager.swift

import Foundation

class SharedPreferenceManager: NSObject { class var sharedIntance : SharedPreferenceManager { struct Static { static let instance = SharedPreferenceManager() } return Static.instance }

</span><span class="kwd">let</span><span class="pln"> sharedPreferenc </span><span class="pun">=</span><span class="pln"> </span><span class="typ">UserDefaults</span><span class="pun">.</span><span class="pln">standard

</span><span class="com">//MARK:- clear all Data.</span><span class="pln">
func clearAllPreference</span><span class="pun">()</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">if</span><span class="pln"> </span><span class="kwd">let</span><span class="pln"> bundle </span><span class="pun">=</span><span class="pln"> </span><span class="typ">Bundle</span><span class="pun">.</span><span class="pln">main</span><span class="pun">.</span><span class="pln">bundleIdentifier </span><span class="pun">{</span><span class="pln">
        sharedPreference</span><span class="pun">.</span><span class="pln">removePersistentDomain</span><span class="pun">(</span><span class="pln">forName</span><span class="pun">:</span><span class="pln"> bundle</span><span class="pun">)</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span><span class="pln">

</span><span class="com">//MARK:- setter methods.</span><span class="pln">
   func saveUserToken </span><span class="pun">(</span><span class="pln">_ userToken </span><span class="pun">:</span><span class="pln"> </span><span class="typ">String</span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    sharedPreference</span><span class="pun">.</span><span class="kwd">set</span><span class="pun">(</span><span class="pln">userToken</span><span class="pun">,</span><span class="pln"> forKey</span><span class="pun">:</span><span class="pln"> </span><span class="str">"userToken"</span><span class="pun">)</span><span class="pln">
</span><span class="pun">}</span><span class="pln">




</span><span class="com">//MARK:- getter Methods.</span><span class="pln">

func getUserToken</span><span class="pun">()</span><span class="pln"> </span><span class="pun">-&gt;</span><span class="pln"> </span><span class="typ">String</span><span class="pun">?</span><span class="pln"> </span><span class="pun">{</span><span class="pln">
    </span><span class="kwd">return</span><span class="pln"> sharedPreference</span><span class="pun">.</span><span class="kwd">value</span><span class="pun">(</span><span class="pln">forKey</span><span class="pun">:</span><span class="pln"> </span><span class="str">"userToken"</span><span class="pun">)</span><span class="pln"> </span><span class="kwd">as</span><span class="pun">?</span><span class="pln"> </span><span class="typ">String</span><span class="pln">
</span><span class="pun">}</span></pre></div>

ViewController.swift

import UIKit

class ViewController: UIViewController {
override func viewDidLoad() { super.viewDidLoad() //Do any additional setup after loading the view. let token = "ABCDEFGD!@#$456MK" SharedPreferenceManager.sharedIntance.saveUserToken(token)

    </span><span class="kwd">if</span><span class="pln"> </span><span class="kwd">let</span><span class="pln"> token </span><span class="pun">=</span><span class="pln"> </span><span class="typ">SharedPreferenceManager</span><span class="pun">.</span><span class="pln">sharedIntance</span><span class="pun">.</span><span class="pln">getUserToken</span><span class="pun">(){</span><span class="pln">
        debugPrint</span><span class="pun">(</span><span class="pln">token</span><span class="pun">)</span><span class="pln">
    </span><span class="pun">}</span><span class="pln">
 </span><span class="pun">}</span><span class="pln">
</span><span class="pun">}</span></pre></div>

SharedPreferenceManager类可以在实时项目中使用,无涯教程可以在其中放置所有setter和getter方法来保存和检索UserDefaults中的值。

    参考链接

    www.learnfk.com/ios/ios-get…