Was ist der beste Weg, um zu sparen ein NSMutableArray zu NSUserDefaults?
Habe ich ein benutzerdefiniertes Objekt namens Anlass wie folgt definiert:
#import <Foundation/Foundation.h>
@interface Occasion : NSObject {
NSString *_title;
NSDate *_date;
NSString *_imagePath;
}
@property (nonatomic, retain) NSString *title;
@property (nonatomic, retain) NSDate *date;
@property (nonatomic, retain) NSString *imagePath;
Nun ich habe ein NSMutableArray von Gelegenheiten, die ich speichern möchten NSUserDefaults. Ich weiß, es ist nicht möglich, in ein straight forward Mode-so Frage ich mich, was ist der einfachste Weg, das zu tun? Wenn die Serialisierung ist die Antwort, dann wie? Weil ich lese die Dokumentation, aber konnte nicht verstehen, wie es funktioniert voll.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie etwas verwenden wie
NSKeyedArchiver
zum serialisieren des Arrays zu einemNSData
, speichern Sie es auf derNSUserDefaults
und verwenden Sie dannNSKeyedUnarchiver
Deserialisieren es später:Müssen Sie implementieren die
NSCoding
Protokoll in IhremOccasion
Klasse und richtig speichern der verschiedenen Eigenschaften, um diese Arbeit zu machen, richtig. Weitere Informationen finden Sie in der Archive und Serialisierungen Programming Guide. Es sollte nicht mehr als ein paar Zeilen code um dies zu tun. So etwas wie:NSArray
dann verwenden[array mutableCopy]
um eine veränderbare version.NSUserDefaults
ist bestimmt für die Benutzereinstellungen nicht speichern von Anwendungsdaten. Verwenden CoreData oder serialisieren der Objekte in das Dokumente-Verzeichnis. Sie müssen Ihre Klasse implementieren, dieNSCoding
Protokoll für ihn zu arbeiten.1) Implementieren Sie
NSCoding
imOccasion.h
2) Umsetzung des Protokolls in
Occasion.m
3) Archivieren Sie die Daten in eine Datei im Verzeichnis Dokumente
4) Zu entpacken...
Du implementieren könntest
NSCoding
imOccasion
.Verwenden Sie dann
[NSKeyedArchiver archivedDataWithRootObject:myArray]
zum erstellen einerNSData
Objekt aus dem array. Sie können dies in den Standardeinstellungen des Benutzers.