美文网首页
iOS-UserDefaults保存Codable对象

iOS-UserDefaults保存Codable对象

作者: 大风车__ | 来源:发表于2019-04-12 17:30 被阅读0次
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)
    }
}

相关文章

网友评论

      本文标题:iOS-UserDefaults保存Codable对象

      本文链接:https://www.haomeiwen.com/subject/pezcwqtx.html