2012-04-12 3 views
0

Mögliche Duplizieren:
Storing custom objects in an NSMutableArray in NSUserDefaults
How to store custom objects in NSUserDefaultsWie füge ich ein Objekt in NSMutableArray hinzu, um es in NSUserDefaults zu speichern?

Ich habe versucht, ein Objekt aus einer Klasse instanziiert zu speichern I "Animal" in einem NSMutableArray genannt schrieb in NSUserDefaults gespeichert werden. Allerdings bekomme ich diesen Fehler.

[NSUserDefaults setObject:forKey:]: Attempt to insert non-property value '(
    "<Animal: 0xcea7060>" 
)' of class '__NSArrayM'. Note that dictionaries and arrays in property lists must also contain only property values. 

Was bedeutet das? Vielleicht kann ich Objekte in NSMutableArrays nicht speichern, um in NSUserDefaults gespeichert zu werden?

+3

möglich Duplikat von [Wie benutzerdefinierte speichern Objekte in NSUserDefaults] (http://stackoverflow.com/q/2315948/); auch http://stackoverflow.com/q/7459585/, http://stackoverflow.com/q/537044/ und http://stackoverflow.com/q/471830/ –

Antwort

3

NSUserDefaults speichern können Arrays und Wörterbücher, wandelbar oder nicht, aber nur, wenn sie Immobilien-list-Rechts-Klassen enthalten (NSNumber, NSString, NSData, und ein paar andere). Für andere Klassen sollten Sie serialize the object(s) into an NSData vor dem Einfügen in NSUserDefaults (oder in eine Sammlung, die Sie in NSUserDefaults einfügen oder in eine Eigenschaftsliste schreiben).

Setzen benutzerdefinierte Klassen in NSUserDefaults nicht häufig in den meisten Anwendungen, so können Sie auch darüber nachdenken, ob Ihre Animal s wirklich dorthin gehören. Denken Sie daran, NSUserDefaults ist für Einstellungen, Zustand und andere kleine Dinge - die Daten, die Ihre App verwaltet, sind besser woanders gespeichert. Verwenden Sie archiving oder Eigenschaftslisten, um Dateien in die Sandbox Ihrer App oder Core Data (oder eine andere Datenbank) für solche Dinge zu schreiben.

-3

Sie Check-out Archive oder Serialization

Verwandte Themen