Tôi đã tìm ra một thay thế, trước khi lưu, tôi mã hóa đối tượng gốc ( NSArrayđối tượng) bằng cách sử dụng NSKeyedArchiver, kết thúc bằng NSData. Sau đó sử dụng UserDefaults lưu NSData.
Khi tôi cần dữ liệu, tôi đọc NSDatavà sử dụng NSKeyedUnarchiverđể chuyển đổi NSDatatrở lại đối tượng.
Nó hơi cồng kềnh, bởi vì tôi cần chuyển đổi sang / từ NSDatamọi lúc, nhưng nó chỉ hoạt động.
Đây là một ví dụ cho mỗi yêu cầu:
Tiết kiệm:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSMutableArray *arr = ... ; // set value
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:arr];
[defaults setObject:data forKey:@"theKey"];
[defaults synchronize];
Tải:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData *data = [defaults objectForKey:@"theKey"];
NSArray *arr = [NSKeyedUnarchiver unarchiveObjectWithData:data];
Phần tử trong mảng thực hiện
@interface CommentItem : NSObject<NSCoding> {
NSString *value;
}
Sau đó, trong việc thực hiện CommentItem, cung cấp hai phương pháp:
-(void)encodeWithCoder:(NSCoder *)encoder
{
[encoder encodeObject:value forKey:@"Value"];
}
-(id)initWithCoder:(NSCoder *)decoder
{
self.value = [decoder decodeObjectForKey:@"Value"];
return self;
}
Bất cứ ai có giải pháp tốt hơn?
Cảm ơn mọi người.