如何将自定义对象数组保存到 NSUserDefauls,例如:
class Settings: NSObject {
var name: String? = ""
var addresss: [Address] = [Address]()
var addressSelectedIndex: Int = 0
....
}
class Address: NSObject {
var street: String? = ""
var city: String? = ""
....
}
我已经向这两个类添加了编码器和解码器。出现错误:
func encodeWithCoder(aCoder: NSCoder) {
....
if let _addresss = self.addresss { // here
aCoder.encodeObject(_ addresss, forKey: "addresss")
}
}
Initializer for conditional binding must have Optional type, not '[Address]'
最佳答案
addresss
不是可选属性,您将其初始化为空数组。因此,使用 if let
对此属性进行 nil
检查是没有意义的。
您的编码函数应如下所示:
func encodeWithCoder(aCoder: NSCoder) {
....
aCoder.encodeObject(addresss, forKey: "addresss")
}
关于arrays - 将自定义对象数组保存在 NSUserDefaults 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41415675/