【发布时间】:2023-04-04 22:33:01
【问题描述】:
struct AllItemsData {
var DSTBID: String!
var CCAS: String!
var BCAS: String!
}
这是我创建类型数组的结构
AllItemsDataArray = [AllItemsData()]
添加一些数据后,现在我想将其存储到用户默认值中。
我是这样做的:
AllItemsDataArray.removeFirst()
let archivedArray = NSKeyedArchiver.archivedData(withRootObject: All_ItemsDataArray)
print(archivedArray)
preference.set(archivedArray, forKey: allItemsDataKey)
但错误是这样的:
ios[1540:537869] -[_SwiftValue encodeWithCoder:]:无法识别的选择器发送到实例 0x15d1e200
崩溃发生前数组中的值是:
AllItemsData(DSTBID:GGGGGGGGGGGG,CCAS:,BCAS:)
AllItemsData(DSTBID:HHHHHHHHHHHH,CCAS:,BCAS:)
【问题讨论】:
-
您的结构不符合
NSCoding协议。 -
是的 :( 很遗憾结构从不符合 NSCoding - 我也在寻找一个很好的解决方案 - 如何在 UserDefaults 之间保存和恢复结构(和嵌套结构)
-
在结构上你会得到一个
error: non-class type 'AllItemsData' cannot conform to class protocol 'NSCoding',所以你永远没有机会实现NSCoding:( -
你需要换一个类
-
但我正在等待更好的解决方案
标签: ios swift nskeyedarchiver