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 NSData
và sử dụng NSKeyedUnarchiver
để chuyển đổi NSData
trở lại đối tượng.
Nó hơi cồng kềnh, bởi vì tôi cần chuyển đổi sang / từ NSData
mọ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.