【发布时间】:2020-01-14 07:59:13
【问题描述】:
class Item
{
var name: String
var collectionId: Int
init(name: String, collectionId: Int) {
self.name = name
self.collectionId = collectionId
}
}
class ViewController:UIViewController
{
var itemList = [Item]()
func recievedResults()
{
let defaults = NSUserDefaults.standardUserDefaults()
defaults.setObject(self.itemList, forKey: "myList")
}
}
我收到一个错误“属性列表不能包含'CFType'类型的对象”
如何将 itemList 存储并获取到 NSUserDefaults?
【问题讨论】:
-
在 Objective-c 中,NSUserdefaults 只接受原始数据: NSArray, NSString ,... 要在 NSUserdefaults 中保存自定义对象,您必须使用 NSKeyedArchiver(和 NSKeyedUnarchiver)将编码器和解码器方法添加到您的班级。我认为它在 Swift 中应用了相同的规则。
-
您不应该在 NSUserDefaults 中存储 NSArray。请改用 plist。