在 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")
}