在NSUserDefaults中保存自定义对象数组

时间:2017-01-01 13:04:16

标签: arrays swift 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")
   }
}
  

条件绑定的初始化程序必须具有可选类型,而不是'[地址]'

2 个答案:

答案 0 :(得分:0)

因为你声明了

var addresss: [Address] = [Address]()

addresss不是可选的,因此您不需要使用if let

您应该将其声明为:

var addresss: [Address]?

答案 1 :(得分:0)

$("#editor").html("I am a <b>bold</b> text.");不是可选属性,您将其初始化为空数组。因此,使用addresss nil检查此属性是没有意义的。

您的编码功能应如下所示:

if let