ฉันพบทางเลือกหนึ่งก่อนที่จะบันทึกผมเข้ารหัสวัตถุราก ( NSArrayวัตถุ) โดยใช้ซึ่งจะสิ้นสุดลงด้วยNSKeyedArchiver NSDataจากนั้นใช้ UserDefaults NSDataประหยัด
เมื่อฉันต้องการข้อมูลฉันอ่านNSDataและใช้NSKeyedUnarchiverในการแปลงNSDataกลับไปเป็นวัตถุ
มันค่อนข้างยุ่งยากเพราะฉันต้องแปลงเป็น / จากNSDataทุกครั้ง แต่มันก็ใช้ได้
นี่คือตัวอย่างหนึ่งต่อคำขอ:
บันทึก:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSMutableArray *arr = ... ; // set value
NSData *data = [NSKeyedArchiver archivedDataWithRootObject:arr];
[defaults setObject:data forKey:@"theKey"];
[defaults synchronize];
โหลด:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSData *data = [defaults objectForKey:@"theKey"];
NSArray *arr = [NSKeyedUnarchiver unarchiveObjectWithData:data];
องค์ประกอบในอาร์เรย์ใช้
@interface CommentItem : NSObject<NSCoding> {
NSString *value;
}
จากนั้นในการดำเนินการCommentItemให้สองวิธี:
-(void)encodeWithCoder:(NSCoder *)encoder
{
[encoder encodeObject:value forKey:@"Value"];
}
-(id)initWithCoder:(NSCoder *)decoder
{
self.value = [decoder decodeObjectForKey:@"Value"];
return self;
}
ใครมีทางออกที่ดีกว่า
ขอบคุณทุกคน