Saya menemukan satu alternatif, sebelum menyimpan, saya menyandikan objek root ( NSArray
objek) menggunakan NSKeyedArchiver
, yang berakhir dengan NSData
. Kemudian gunakan UserDefaults simpan NSData
.
Ketika saya membutuhkan data, saya membaca NSData
, dan gunakan NSKeyedUnarchiver
untuk mengkonversi NSData
kembali ke objek.
Agak rumit, karena saya perlu mengkonversi ke / dari NSData
setiap 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.