Ich habe eine Alternative herausgefunden, bevor ich speichere, codiere ich das Stammobjekt ( NSArray
Objekt) mit NSKeyedArchiver
, das mit endet NSData
. Verwenden Sie dann UserDefaults und speichern Sie die NSData
.
Wenn ich die Daten benötige, lese ich sie aus NSData
und NSKeyedUnarchiver
konvertiere sie NSData
zurück zum Objekt.
Es ist ein wenig umständlich, weil ich NSData
jedes Mal zu / von konvertieren muss, aber es funktioniert einfach.
Hier ist ein Beispiel pro Anfrage:
Sparen:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSMutableArray *arr = ... ; // set value
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:arr];
[defaults setObject:data forKey:@"theKey"];
[defaults synchronize];
Belastung:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData *data = [defaults objectForKey:@"theKey"];
NSArray *arr = [NSKeyedUnarchiver unarchiveObjectWithData:data];
Das Element im Array wird implementiert
@interface CommentItem : NSObject<NSCoding> {
NSString *value;
}
Dann CommentItem
bietet bei der Implementierung von zwei Methoden:
-(void)encodeWithCoder:(NSCoder *)encoder
{
[encoder encodeObject:value forKey:@"Value"];
}
-(id)initWithCoder:(NSCoder *)decoder
{
self.value = [decoder decodeObjectForKey:@"Value"];
return self;
}
Hat jemand eine bessere Lösung?
Vielen Dank an alle.