我没有使用核心数据。为了简单起见,假设我有以前类型为NSString的数据,现在它们应该是自定义类Person的对象,其唯一的ivar是NSString类型的“名称”ivar。在应用程序的更新版本中,我希望我的Person对象将其“名称”设置为NSString在保存的数据中的任何内容。但是假设我的人出现在应用程序中的许多不同的地方,所以告诉它如何单独处理每一个将是一个痛苦。
处理此问题的最佳方法是什么?特别是,我是否可以采取一些技巧来在非归档过程中捕获它?或者我是否必须浏览每个未归档的对象并将相应的NSStrings转换为Person对象?
答案 0 :(得分:0)
您可以创建一个实用程序类,用于检查从unarchiver返回的值,并通过此方法运行它。如果值是NSString,那么你可以构造一个新的Person对象,如果没有,那么只返回该对象。
+ (Person *)personFromStringOrPersonObject:(id)object {
if ([object isKindOfClass:[NSString class]]) {
// Construct your Person object
Person person = [Person new];
person.name = object;
return person;
} else {
return object;
}
}