如何在 iPhone sdk 中序列化一个简单的对象?
我有一本对象字典; 它们都是应该可序列化的 POCO 对象。 我应该采用什么技术将它们写入磁盘。 我正在寻找最简单的选项来编写一些列表来保存状态。
我想我有3个选择。
plist 文件。 然而,这似乎仅限于存储预定义的对象(字符串、数字等),而不是对象(如具有姓名和年龄的人)。
核心数据。 (3.0 中的新增功能)这会很好用; 但是我的数据模型需要改变才能使这项工作起作用。 这将是一次大规模的返工,我不确定是否值得付出努力。
SQLLite。 实现一个简单的 SQL 数据库来读取和读取。 我对此进行了最少的研究,但我不想“重写”一些核心数据 ORM 函数。
I have a dictionary of objects; they are all POCO objects that should be serializable. What technique should I look at for writing these to disk. I'm looking for the simplest option to write a few lists to save state.
I think I have 3 options.
plist files. However this seems to be limited to only storing predefined objects (strings, numbers etc) not objects (like a person with a name and age).
CoreData. (New in 3.0) This would work well; however my data model would need to change to make this work. This would be a massive rework and I'm not sure if it is worth the effort.
SQLLite. Implement a simple SQL database to read to and from. I have done the least amount of reserch into this one, but I don't want to have to 'rewrite' some of the core data ORM functions.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
发布评论
评论(3)
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
要序列化自定义对象,您只需遵守
NSCoding
协议。 如果您的对象扩展了 NSObject,您所需要做的就是(我相信)实现这些(例如 person 对象):NSArray
和NSDictionary
已经实现了序列化方法。 它们将序列化它们所持有的所有对象(如果对象实现 NSCoder 接口 - 如果它们扩展 NSObject,则它们会序列化)。 NSObject 的encodeWithCoder
和initWithCoder
默认情况下不执行任何操作,因此除非您在类中实现自己的代码,否则不会序列化任何内容。如果你有 NSArray 或 NSDictionary 对象,你可以使用以下方法同步它们:
To serialize custom object you just need to conform to the
NSCoding
protocol. If your object extends NSObject all you need to do (I believe) is to implement these (example for person object):NSArray
andNSDictionary
already implement methods for serialization. They will serialize all the objects that they hold (if objects implement NSCoder interface - they do if they extend NSObject). NSObject'sencodeWithCoder
andinitWithCoder
do nothing by default so unless you implement your own code in your classes nothing gets serialized.If you have NSArray or NSDictionary of objects you can synchronize them using: