gpt4 book ai didi

iphone - NSCoding 嵌套自定义对象?

转载 作者:技术小花猫 更新时间:2023-10-29 10:45:08 25 4
gpt4 key购买 nike

我有一系列嵌套对象需要通过 NSCoding 协议(protocol)进行处理,以便我可以将顶级对象保存到 NSUserDefaults 中。

这是对象的结构:

'讲师'类

  • NSMutableArray 包含...的实例

'类'类

  • NSMutableArray 包含...的实例

'学生'类

  • 命名属性
  • 数字属性
  • 金钱属性(property)

我需要将 Instructor 的实例保存到 NSUserDefaults 或应用程序的文档中。如您所见,Instructor 对象持有一个数组,该数组随后持有一个类的实例。该类对象持有学生的实例。

NSCoding 协议(protocol)是递归的吗?我的意思是,如果我将 NSCoding 协议(protocol)添加到每个类,我就可以保存一个 Instructor 对象,它会递归地编码包含的对象?

在解码时它会以同样的方式工作吗?我可以只解码一个讲师类,它会递归地解码包含的对象,因为它们也符合 NSCoding 协议(protocol)?

我该如何设置它?

最佳答案

是的,您可以(并且可能应该)编写对 NSCoding 的递归支持。这就是 NSCoding 应该如何工作的。

当你实现 encodeWithCoder 时,只需调用

[coder encodeObject: aProperty forKey: @"propertyName"];

关于对象的所有属性,包括它的容器属性。

然后确保对象的对象图中的每个对象也符合 NSCoding。

对于标量属性,您可以使用 NSCoder 方法保存标量值,例如 encodeInt:forKey:

要将符合 NSCoding 的对象保存到用户默认值,首先使用 NSKeyedArchiver 类方法 archivedDataWithRootObject 将其转换为 NSData,然后将结果数据保存到默认值。非常简单,真的。

关于iphone - NSCoding 嵌套自定义对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19013210/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com