从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">-></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中的值。
参考链接