次のようにカスタムオブジェクトを保存しようとしていますが、エラーが発生しています。ここ 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];
がキャッチされない例外により 'NSInvalidArgumentException'、理由にアプリを終了私のpOrderElements
(lldb) po pOrderElements
<__NSArrayM 0x174256b90>(
{
category = 1;
imagePath = "products/chicken-kabob.png";
name = "Baked Chicken";
price = "5.49";
}
)
です: ' - [__ NSCFArrayはバイト]: 認識されていないセレクタはインスタンス0x174264f40に送られた'
[NSUserDefaultsでカスタムオブジェクトを格納する方法]の可能性のある重複したよう
NSUserDefaults
からカスタムオブジェクトを取得http://stackoverflow.com/questions/2315948/how-to-store-custom-objects- in-nsuserdefaults) –私は答えに次のように言いましたが、私はエラーが発生しましたhttp://stackoverflow.com/questions/19720611/attempt-to-set-a-non-property-list-object-as-an-nsuserdefaults – hotspring
エンコーダデコーダを実装しましたか? –