我试图存储自定义对象,如下所示,但出现错误。将自定义对象存储在NSUserDefaults中
// store data
NSMutableArray *archiveArray = [NSMutableArray arrayWithCapacity:pOrderElements.count];
for (id orderObject in pOrderElements) {
NSData *personEncodedObject = [NSKeyedArchiver archivedDataWithRootObject:orderObject];
[archiveArray addObject:personEncodedObject];
}
NSUserDefaults *userData = [NSUserDefaults standardUserDefaults];
[userData setObject:archiveArray forKey:@"personDataArray"];
// retrive data
NSData *data = [userData objectForKey:@"personDataArray"];
// the following line throws an error
id retrieveData = [NSKeyedUnarchiver unarchiveObjectWithData:data];
这里是我的pOrderElements
(lldb) po pOrderElements
<__NSArrayM 0x174256b90>(
{
category = 1;
imagePath = "products/chicken-kabob.png";
name = "Baked Chicken";
price = "5.49";
}
)
终止应用程序由于未捕获的异常 'NSInvalidArgumentException' 的,理由是: ' - [__ NSCFArray字节]: 无法识别的选择发送到实例0x174264f40'
[如何存储在定制对象NSUserDefaults的]的可能的复制(http://stackoverflow.com/questions/2315948/how-to-store-custom-objects-在-nsuserdefaults) –
我提到下面的答案,但我得到了错误http://stackoverflow.com/questions/19720611/attempt-to-set-a-non-property-list-object-as-an-nsuserdefaults – hotspring
你有没有实现编码器解码器 –