【发布时间】:2017-08-30 13:34:41
【问题描述】:
我正在尝试按如下方式存储自定义对象,但出现错误。
// 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'
【问题讨论】:
-
我参考了以下答案,但我得到了错误stackoverflow.com/questions/19720611/…
-
你实现了编码器解码器吗?
-
这是重复的问题,但我已根据您的需要发布了完整的答案。请检查并告诉我@hotspring
标签: ios objective-c nsuserdefaults nskeyedarchiver nskeyedunarchiver