Saya menemukan satu alternatif, sebelum menyimpan, saya menyandikan objek root ( NSArrayobjek) menggunakan NSKeyedArchiver, yang berakhir dengan NSData. Kemudian gunakan UserDefaults simpan NSData.
Ketika saya membutuhkan data, saya membaca NSData, dan gunakan NSKeyedUnarchiveruntuk mengkonversi NSDatakembali ke objek.
Agak rumit, karena saya perlu mengkonversi ke / dari NSDatasetiap kali, tetapi hanya berfungsi.
Berikut ini satu contoh per permintaan:
Menyimpan:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSMutableArray *arr = ... ; // set value
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:arr];
[defaults setObject:data forKey:@"theKey"];
[defaults synchronize];
Beban:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData *data = [defaults objectForKey:@"theKey"];
NSArray *arr = [NSKeyedUnarchiver unarchiveObjectWithData:data];
Elemen dalam array mengimplementasikan
@interface CommentItem : NSObject<NSCoding> {
NSString *value;
}
Kemudian dalam implementasi CommentItem, menyediakan dua metode:
-(void)encodeWithCoder:(NSCoder *)encoder
{
[encoder encodeObject:value forKey:@"Value"];
}
-(id)initWithCoder:(NSCoder *)decoder
{
self.value = [decoder decodeObjectForKey:@"Value"];
return self;
}
Adakah yang punya solusi yang lebih baik?
Terimakasih semuanya.