Znalazłem jedną alternatywę, przed zapisaniem koduję obiekt główny ( NSArray
obiekt) za pomocą NSKeyedArchiver
, który kończy się na NSData
. Następnie użyj UserDefaults, zapisz plik NSData
.
Kiedy potrzebuję danych, czytam NSData
i używam NSKeyedUnarchiver
do konwersji z NSData
powrotem do obiektu.
Jest to trochę uciążliwe, ponieważ NSData
za 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.