Kaydetmeden önce bir alternatif buldum , ile biten kök nesneyi ( NSArray
nesneyi) kullanarak NSKeyedArchiver
kodluyorum NSData
. Daha sonra UserDefaults'u kullanarak NSData
.
Verilere ihtiyacım olduğunda, okudum ve nesneye geri dönüştürmek için NSData
kullanıyorum .NSKeyedUnarchiver
NSData
Biraz külfetli, çünkü NSData
her seferinde dönüşüme / dönüşüme ihtiyacım var, ama işe yarıyor.
İşte istek başına bir örnek:
Kayıt etmek:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSMutableArray *arr = ... ;
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:arr];
[defaults setObject:data forKey:@"theKey"];
[defaults synchronize];
Yük:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData *data = [defaults objectForKey:@"theKey"];
NSArray *arr = [NSKeyedUnarchiver unarchiveObjectWithData:data];
Dizideki öğe uygular
@interface CommentItem : NSObject<NSCoding> {
NSString *value;
}
Daha sonra uygulamasında CommentItem
iki yöntem sağlar:
-(void)encodeWithCoder:(NSCoder *)encoder
{
[encoder encodeObject:value forKey:@"Value"];
}
-(id)initWithCoder:(NSCoder *)decoder
{
self.value = [decoder decodeObjectForKey:@"Value"];
return self;
}
Daha iyi bir çözümü olan var mı?
Herkese teşekkürler.