如何将对象序列化为NSDictionary?

时间:2012-03-22 19:10:02

标签: iphone serialization nsdictionary

我想将对象序列化为NSDictionary。

(key = value)将是(property-name = property-value)

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

有没有人有想法? API?指针?反射?框架?

谢谢!

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

采用NSCoding肯定是一种选择 - 基本上,您的图表元素都需要知道如何序列化/反序列化自己(通过采用NSCoding)。在这种方法下,您可以使用NSCoder接口进行存档和取消存档。

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

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

更多细节可以在Apple的“Archives and Serializations Programming Guide”中找到。