我有一个名为qazxsw poi的对象符合Swift 4中引入的qazxsw poi。
例如,这个对象曾经是
User
我们使用Codable
和struct User: Codable {
var firstName: String
}
将PropertyListDecoder().decode(User.self, from: data)
编码为PropertyListEncoder().encode(value)
并将User
解码为Data
。
现在我们更新了对象
Data
如果我们的应用程序从旧的应用程序更新,其中包含存储在User
中的旧struct User: Codable {
var firstName: String
var isLoggedIn: Bool
}
。应用程序在更新后要做的第一件事是获取此Data
并尝试使用UserDefault
解码为Data
。但是,它给出了一个错误:
User
知道如何在这种情况下处理模型迁移吗?我知道对于Coredata来说有一些简单的方法可以解决这个问题,但我不知道如何在UserDefault中实现它。
您可以实现解码初始化程序并为PropertyListDecoder().decode(User.self, from: data)
设置默认值(如果没有):
po PropertyListDecoder().decode(User.self, from: data)
▿ DecodingError
▿ keyNotFound : 2 elements
- .0 : CodingKeys(stringValue: "isLoggedIn", intValue: nil)
▿ .1 : Context
- codingPath : 0 elements
- debugDescription : "No value associated with key CodingKeys(stringValue: \"isLoggedIn\", intValue: nil) (\"isLoggedIn\")."
- underlyingError : nil