我用谷歌搜索并搜索了这个没有直截了当的结果。我似乎对Apple的文档中存在以下基本的误解:
存档可以存储任意复杂的对象图。档案 保留图中所有对象的身份和所有对象 它与图中所有其他对象的关系。什么时候 在没有归档的情况下,重建的对象图应该是少数例外 原始对象图的精确副本。
假设我有NSMutableArray
是Person
个对象的集合。每个Person
对象都实现initWithCoder
和encodeWithCoder
。此外,任何给定的Person
NSMutableArray
都可能有Task
个willEnterBackground
个对象(符合编码规范)。
我的理解是存在一种归档方式,从而触发任意深度的级联序列化,具体取决于编码协议的实现。所以在我的视图控制器中,我有一个data = [NSKeyedArchiver archivedDataWithRootObject:self.people];
// persist to NSUserDefaults
:
viewDidLoad
我有一个// read from NSUserDefaults
self.people = [NSKeyedUnarchiver unarchiveObjectWithData:data];
:
initWithCoder
这一切都发生了,但有两件事:
encodeWithCoder
数组包含的对象中的people
和self.people
。连连呢?提示?
答案 0 :(得分:2)
即使你实现了这两个方法,你是否声明你的Person类在协议中?