<分区>
如果我们对符合 Codable
的类的对象进行编码,并希望使用具有新属性的新类代码来解码这些对象,那么需要什么代码才能使该新属性成为非- 可选,并为其属性赋予默认值?
老类:
class Item: Codable {
let id: String
}
新类:
class Item: Codable {
let id: String
let title: String
}
当使用新格式的代码解码以旧格式保存的对象时,将找不到 title
属性,并且解码将不起作用。
我们可以通过使 title
成为可选的 String?
来解决这个问题。
但我们如何才能将 title
保持为非可选 String
,并在解码每个对象时为其赋予默认值?
PS:这是完整的代码。没有指定编码 key ,也没有编写来自解码器的自定义初始化。