更新时间:2022-11-18 22:08:25
默认情况下,字典是可编码对象,您可以使用以下扩展名将它们保存为UserDefaults
Dictionaries are Codable objects by default, you can use the following extensions to save them to 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)
}
}
它们可以像这样使用:
let test = [1:"me"]
UserDefaults.standard.set(object: test, forKey: "test")
let testFromDefaults = UserDefaults.standard.object([Int: String].self, with: "test")
此扩展名和许多其他扩展名是 SwifterSwift 的一部分,您可能想在下一个iOS中使用它项目:)
This extension and many others are part of SwifterSwift, you might want to use it for your next iOS project :)