我想将对象序列化为NSDictionary。
(key = value)将是(property-name = property-value)
如果属性是另一个对象,它将被递归序列化为父NSDictionary中的另一个NSDictionary。
有没有人有想法? API?指针?反射?框架?
谢谢!
答案 0 :(得分:1)
您需要将对象转换为字典的目的是什么?
如果要将对象保存到文件中,您应该查看NSCoder协议,您可以为对象实现该协议,以便您的对象数组(例如)可以通过内置方法(如NSArray)进行序列化 - 将writeToFile:原子:
答案 1 :(得分:1)
采用NSCoding
肯定是一种选择 - 基本上,您的图表元素都需要知道如何序列化/反序列化自己(通过采用NSCoding
)。在这种方法下,您可以使用NSCoder
接口进行存档和取消存档。
另一种常见的替代方案是财产清单。这是一种更简单,更便携的格式,对类型有一些限制。即,NSString
,NSArray
,NSDictionary
,NSNumber
(和CFBoolean
),NSData
和NSDate
- 以及他们的CoreFoundation同行。这些类型和集合都知道如何适当地序列化它们的元素。在这里,您可以使用NSPropertyListSerialization
进行存档和取消存档。这对于较小的任务来说并不是很大的开销,但NSCoding
通常是一个更好的长期解决方案,其中可移植性不是一个问题(例如,导出为XML),因为对象可以维护其序列化实现而无需来自归档器的干预。 / p>
对于自定义对象,您通常会支持属性列表表示和/或NSCoding
- 但集合类型已经知道如何自行存档和取消存档(当然,它们的内容也支持序列化方法)使用)。
更多细节可以在Apple的“Archives and Serializations Programming Guide”中找到。