我花了几天时间学习和编写NSCoding,并最终使其工作。但是,对(非常复杂的)对象图进行存档和取消存档需要很长时间,这是不可接受的。在搜索互联网一段时间后,我认为更好的方法是使用核心数据。
您是否建议1)我应该将所有类重写为NSManagedObject的子类,或者2)我是否应该在每个类中创建NSManagedObject的实例变量,以便对类的任何更改也更新其核心数据表示?无论采用哪种方式都需要对现有类进行重大更改,我认为如果它改变了类的初始化方式,我还必须更新大量的单元测试用例。
你推荐什么?我真的不想再次走向错误的方法......
谢谢!
答案 0 :(得分:2)
如果您使用核心数据,我建议1)。
2)没有多大意义。例如,假设A* a1
和A* a2
引用相同的B* b
。如果A
和B
是NSManagedObject
的子类,则可以轻松地将此关系保存到文件中,然后从文件中检索。但是,如果A
和B
有NSManagedObject
个实例作为ivars,那么如何维持这两个A
引用一个B
的关系?您将被迫编写大量的胶水代码,这些代码基本上由Core Data API提供。
如果您决定使用核心数据,我可以给出的一个非常重要的建议是从开始到结束仔细阅读Apple的文档非常,非常,并且抵制从第一天开始编写代码的冲动。核心数据是一个相当大的API集合,在开始编写代码之前很好地掌握整个结构将为您节省很多天。