如何对在新版本中修改过的对象进行反序列化。
例如
我的项目版本1.0中有一个人类
应用程序终止时,Person对象数组被序列化
@interface Person : NSObject <NSCoding>
@property NSString *name;
@property NSUInteger age;
@property NSString *location;
@end
这就是我序列化数据的方式
- (void)serializePersonList {
NSData *encodedObject = [NSKeyedArchiver archivedDataWithRootObject:personList];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:encodedObject forKey:kPersonKey];
[defaults synchronize];
}
现在我打算发布第2版。而Person Class已经发展到
@interface Person : NSObject <NSCoding>
@property NSString *name;
@property NSUInteger age;
@property NSString *phone;
@property KSAddress *location;
@end
请注意
如何让我的应用程序反序列化旧的Person数据?
答案 0 :(得分:0)
希望您使用的是密钥存档程序。您编写代码以将每个密钥的归档数据连接到它所属的实例变量。当您更改了类型时,您的代码现在需要将数据读入id
局部变量,检查数据类型(isKindOfClass
),然后存储该值或将其转换为新格式然后存储它