struct Account: Codable {
var name: String?
var age: Int?
}
//Codable对象存储
func saveCodable(){
let key = "account"
let userDefaults = UserDefaults.standard
do {
//保存到本地
let account = Account(name: "test", age: 10)
let data = try JSONEncoder().encode(account)
userDefaults.set(data, forKey: key)
userDefaults.synchronize()
} catch {
print(error)
}
//转换成Data
guard let data = userDefaults.object(forKey: key) as? Data else {
return
}
do {
//转换成Account
let account = try JSONDecoder().decode(Account.self, from: data)
print(account.age ?? 1)
print(account.name ?? "")
} catch {
print(error)
}
}
//字典存储
func saveDictionary(){
let key = "account"
//保存到本地
let json: [String: Any] = ["name": "test", "age": 30]
let userDefaults = UserDefaults.standard
userDefaults.set(json, forKey: key)
userDefaults.synchronize()
//转换成字典
guard let keyValues = userDefaults.object(forKey: key) as? [String: Any] else {
return
}
do {
//转换成Account
let jsonData = try JSONSerialization.data(withJSONObject: keyValues, options: [])
let account = try JSONDecoder().decode(Account.self, from: jsonData)
print(account.age ?? 1)
print(account.name ?? "")
} catch {
print(error)
}
}
网友评论