ฉันพบทางเลือกหนึ่งก่อนที่จะบันทึกผมเข้ารหัสวัตถุราก ( 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;
}
ใครมีทางออกที่ดีกว่า
ขอบคุณทุกคน