2011-04-20 98 views
1

我没有使用核心数据。为了简单起见,假设我有一些以前是NSString类型的数据,现在它们应该是自定义类Person的对象,其中唯一的ivar是类型为NSString的“名称”ivar。在应用程序的更新版本中,我希望我的Person对象将其“名称”设置为NSString在保存的数据中的任何位置。但是,假设我的人出现在应用程序的许多不同位置,因此告诉它如何单独处理每个人将是一件痛苦的事情。iOS - 更新新应用程序版本中的数据结构

什么是处理这个问题的最好方法?特别是,我能做些什么来解决它在解压过程中的问题?还是必须通过每个未归档的对象并将相应的NSString转换为Person对象?

回答

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; 
    } 
} 
+0

是的,但随后我必须在任何地方都打电话给我,以解除一个人的身份。不可避免的? – 2011-04-20 02:32:13

+0

是的,我认为这是不可避免的,但至少用辅助方法做起来更容易。您可能还想将“版本”字段添加到数据文件中,以便您可以更轻松地编写数据的迁移路径。 – Frank 2011-04-20 04:32:10

+0

接受,因为它似乎没有更好的办法。 – 2011-04-26 03:37:35

相关问题