在 NSUserDefaults 中保存自定义对象数组
Save custom object array in NSUserDefaults
如何将自定义对象数组保存到 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]'
自从您声明
var addresss: [Address] = [Address]()
addresss
不是可选的,因此您不需要使用 if let
.
您应该将其声明为:
var addresss: [Address]?
addresss
不是可选的 属性,您将其初始化为空数组。因此,使用 if let
.
对此 属性 进行 nil
检查是没有意义的
您的编码函数应如下所示:
func encodeWithCoder(aCoder: NSCoder) {
....
aCoder.encodeObject(addresss, forKey: "addresss")
}
如何将自定义对象数组保存到 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]'
自从您声明
var addresss: [Address] = [Address]()
addresss
不是可选的,因此您不需要使用 if let
.
您应该将其声明为:
var addresss: [Address]?
addresss
不是可选的 属性,您将其初始化为空数组。因此,使用 if let
.
nil
检查是没有意义的
您的编码函数应如下所示:
func encodeWithCoder(aCoder: NSCoder) {
....
aCoder.encodeObject(addresss, forKey: "addresss")
}