Rom*_*man 4 nsuserdefaults uikit ios swift
我正在尝试在UserDefaults中存储字典,并且在代码运行时总是让应用程序崩溃.以下是在执行应用程序时崩溃应用程序的示例代码.我试图将它作为NSDictionary投射或最初使其成为NSDictionary - 得到相同的结果.
class CourseVC: UIViewController {
let test = [1:"me"]
override func viewDidLoad() {
super.viewDidLoad()
defaults.set(test, forKey: "dict1")
}
}
Run Code Online (Sandbox Code Playgroud)
Oma*_*eik 13
字典是默认的Codable对象,您可以使用以下扩展名将它们保存到UserDefaults
extension UserDefaults {
func object<T: Codable>(_ type: T.Type, with key: String, usingDecoder decoder: JSONDecoder = JSONDecoder()) -> T? {
guard let data = self.value(forKey: key) as? Data else { return nil }
return try? decoder.decode(type.self, from: data)
}
func set<T: Codable>(object: T, forKey key: String, usingEncoder encoder: JSONEncoder = JSONEncoder()) {
let data = try? encoder.encode(object)
self.set(data, forKey: key)
}
}
Run Code Online (Sandbox Code Playgroud)
它们可以像这样使用:
let test = [1:"me"]
UserDefaults.standard.set(object: test, forKey: "test")
let testFromDefaults = UserDefaults.standard.object([Int: String].self, with: "test")
Run Code Online (Sandbox Code Playgroud)
这个扩展和许多其他扩展是SwifterSwift的一部分,您可能希望将它用于您的下一个iOS项目:)
| 归档时间: |
|
| 查看次数: |
4346 次 |
| 最近记录: |