Ich habe eine Alternative herausgefunden, bevor ich speichere, codiere ich das Stammobjekt ( NSArrayObjekt) 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 NSDataund NSKeyedUnarchiverkonvertiere sie NSDatazurück zum Objekt.
Es ist ein wenig umständlich, weil ich NSDatajedes 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 CommentItembietet 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.