Blu*_*ear 11 iphone objective-c nscoding ios
我有一系列嵌套对象,我需要通过NSCoding协议,以便我可以将顶级对象保存到NSUserDefaults.
这是对象的结构:
'讲师'课
'班级'班级
'学生'课
我需要将一个Instructor实例保存到NSUserDefaults或该应用程序的文档.正如您所看到的,Instructor对象持有一个数组,然后该数组将保存一个类的实例.该类对象持有学生的实例.
NSCoding协议是递归的吗?我的意思是,如果我将NSCoding协议添加到每个类,我可以保存一个Instructor对象,它会递归编码包含的对象?
在解码时它会以相同的方式工作吗?我可以解码一个教师类,它会递归解码所包含的对象,因为它们也符合NSCoding协议?
我该如何设置呢?
Dun*_*n C 17
是的,您可以(并且可能应该)将您对NSCoding的支持写为递归.这就是NSCoding应该如何工作的方式.
当您的工具encodeWithCoder时,只需调用
[coder encodeObject: aProperty forKey: @"propertyName"];
Run Code Online (Sandbox Code Playgroud)
在所有对象的属性上,包括它的容器属性.
然后确保对象的对象图中的每个对象也符合NSCoding.
对于标量属性,可以使用NSCoder方法保存标量值,例如encodeInt:forKey:
要将符合NSCoding的对象保存为用户默认值,首先使用NSKeyedArchiver类方法archivedDataWithRootObject将其转换为NSData,然后将结果数据保存为默认值.很简单,真的.
归档时间: |
|
查看次数: |
6147 次 |
最近记录: |