如何将对象序列化到NSDictionary



我想将一个对象序列化到NSDictionary。

(键=值)将是(属性名称=属性值)

如果一个属性是另一个对象,则它将被递归序列化为父NSDictionary中的另一个NSDictionary。

有人有主意吗?API指针?反射框架

谢谢!

将对象转换为字典的目的是什么?

如果要将对象保存到文件中,您应该查看NSCoder协议,您可以为对象实现该协议,以便可以通过内置方法(如NSArray的-writeToFile:atomorially:)序列化对象数组。

采用NSCoding当然是一种选择——基本上,图的元素都需要知道如何序列化/反序列化它们自己(通过采用NSCoding)。在这种方法下,您将使用NSCoder接口进行归档和取消归档。

另一个常见的替代方案是财产清单。这是一种更简单、更可移植的格式,对类型有一些限制。即NSStringNSArrayNSDictionaryNSNumber(和CFBoolean)、NSDataNSDate-以及它们的CoreFoundation对应物。这些类型和集合都知道如何适当地序列化它们的元素。在这里,您可以使用NSPropertyListSerialization进行归档和取消归档。对于较小的任务来说,这并不是太大的开销,但NSCoding通常是一个更好的长期解决方案,其中不考虑可移植性(例如导出为XML),因为对象可以维护其序列化实现,而无需归档器的太多干预。

对于自定义对象,通常支持属性列表表示和/或NSCoding,但集合类型已经知道如何存档和取消存档(当然,前提是它们的内容也支持您使用的序列化方法)。

更多详细信息可以在苹果的"档案和系列编程指南"中找到。

最新更新