当对象的属性在归档和取消归档过程之间发生变化时,我对 NSKeyedArchiver 和 NSKeyedUnarchiver 有点挣扎。这是一个具体的例子:
我有一个类,比方说Task,它有属性nameand desc,两者都是 type NSString。现在,我使用存档NSKeyedArchiver archivedDataWithRootObject并将其写入文件。稍后我可以从文件中读取它并使用它NSKeyedUnarchiver unarchiveObjectWithData(data)来回到我想要的位置。当Task获得一项新财产并且为了使事情变得有趣而失去一项时,问题就来了。
所以现在,Taskhas name,这是一个NSString,但是desc不见了。此外,我添加了dateDuetype的属性NSDate。然后启动模拟器。问题是未归档的是 oldTask具有 olddesc属性,而不是 new dateDue。
我initFromCoder实际上考虑了当前类中不存在属性并且不尝试对其进行解码的情况。
有没有办法向 NSCoder 方法解释不是像我序列化它时那样创建对象的精确副本(我意识到这是序列化/反序列化定义的一部分),而是允许我灵活地版本它?
谢谢