Znalazłem jedną alternatywę, przed zapisaniem koduję obiekt główny ( NSArrayobiekt) za pomocą NSKeyedArchiver, który kończy się na NSData. Następnie użyj UserDefaults, zapisz plik NSData.
Kiedy potrzebuję danych, czytam NSDatai używam NSKeyedUnarchiverdo konwersji z NSDatapowrotem do obiektu.
Jest to trochę uciążliwe, ponieważ NSDataza każdym razem muszę konwertować na / z , ale po prostu działa.
Oto jeden przykład na żądanie:
Zapisać:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSMutableArray *arr = ... ; // set value
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:arr];
[defaults setObject:data forKey:@"theKey"];
[defaults synchronize];
Załaduj:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData *data = [defaults objectForKey:@"theKey"];
NSArray *arr = [NSKeyedUnarchiver unarchiveObjectWithData:data];
Element w tablicy implementuje
@interface CommentItem : NSObject<NSCoding> {
NSString *value;
}
Następnie w realizacji CommentItem, zapewnia dwie metody:
-(void)encodeWithCoder:(NSCoder *)encoder
{
[encoder encodeObject:value forKey:@"Value"];
}
-(id)initWithCoder:(NSCoder *)decoder
{
self.value = [decoder decodeObjectForKey:@"Value"];
return self;
}
Czy ktoś ma lepsze rozwiązanie?
Dziękuję wszystkim.