Ich versuche, ein benutzerdefiniertes Objekt wie folgt zu speichern, aber ich erhalte einen Fehler.Speichern Sie benutzerdefinierte Objekte in 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];
hier ist mein pOrderElements
(lldb) po pOrderElements
<__NSArrayM 0x174256b90>(
{
category = 1;
imagePath = "products/chicken-kabob.png";
name = "Baked Chicken";
price = "5.49";
}
)
app aufgrund nicht abgefangene Ausnahme Abschluss 'NSInvalidArgumentException', Grund: '- [__ NSCFArray Bytes]: Unbekannter Selektor zum Beispiel 0x174264f40 gesendet'
Möglichen Duplikat von [Wie benutzerdefinierte speichern Objekten in NSUserDefaults] (http://stackoverflow.com/questions/2315948/how-to-store-custom-objects- in-nsuserdefaults) –
Ich bezog sich auf folgende Antwort, aber ich habe den Fehler http://StackOverflow.com/questions/19720611/attempt-to-set-a-non-property-list-object-as-an-nsuserdefaults – hotspring
Haben Sie einen Encoder-Decoder implementiert? –