我想将一个对象序列化到NSDictionary。
(键=值)将是(属性名称=属性值)
如果一个属性是另一个对象,则它将被递归序列化为父NSDictionary中的另一个NSDictionary。
有人有主意吗?API指针?反射框架
谢谢!
将对象转换为字典的目的是什么?
如果要将对象保存到文件中,您应该查看NSCoder协议,您可以为对象实现该协议,以便可以通过内置方法(如NSArray的-writeToFile:atomorially:)序列化对象数组。
采用NSCoding
当然是一种选择——基本上,图的元素都需要知道如何序列化/反序列化它们自己(通过采用NSCoding
)。在这种方法下,您将使用NSCoder
接口进行归档和取消归档。
另一个常见的替代方案是财产清单。这是一种更简单、更可移植的格式,对类型有一些限制。即NSString
、NSArray
、NSDictionary
、NSNumber
(和CFBoolean
)、NSData
和NSDate
-以及它们的CoreFoundation对应物。这些类型和集合都知道如何适当地序列化它们的元素。在这里,您可以使用NSPropertyListSerialization
进行归档和取消归档。对于较小的任务来说,这并不是太大的开销,但NSCoding
通常是一个更好的长期解决方案,其中不考虑可移植性(例如导出为XML),因为对象可以维护其序列化实现,而无需归档器的太多干预。
对于自定义对象,通常支持属性列表表示和/或NSCoding
,但集合类型已经知道如何存档和取消存档(当然,前提是它们的内容也支持您使用的序列化方法)。
更多详细信息可以在苹果的"档案和系列编程指南"中找到。