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

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

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/

相关文章:

ios - 归档/取消归档时对象是否被修改?

javascript - 将数组转换为逗号分隔的文本

arrays - 为什么 AS3 在 for 循环中创建新实例?

swift - TableView错误委托(delegate),代理从第一次设置时起就发生了变化

ios - NSUserDefaults使用NSInteger注册默认值

c++ - 如何在 VS 调试器中查看 C++ 中动态字符串数组的内容

ios - 使用单个 UIView 屏蔽多个 iOS UIView

android - Swift 中 CC_SHA256 的 Kotlin 等效项是什么?

ios - 在 iOS 中保存属性

ios - 将数据从嵌套的 NSUSERDEFAULTS 加载到 UITABLEVIEW