我应该创建子类NSManagedObject吗?

时间:2011-01-08 11:45:03

标签: objective-c cocoa design-patterns ios core-data

我花了几天时间学习和编写NSCoding,并最终使其工作。但是,对(非常复杂的)对象图进行存档和取消存档需要很长时间,这是不可接受的。在搜索互联网一段时间后,我认为更好的方法是使用核心数据。

您是否建议1)我应该将所有类重写为NSManagedObject的子类,或者2)我是否应该在每个类中创建NSManagedObject的实例变量,以便对类的任何更改也更新其核心数据表示?无论采用哪种方式都需要对现有类进行重大更改,我认为如果它改变了类的初始化方式,我还必须更新大量的单元测试用例。

你推荐什么?我真的不想再次走向错误的方法......

谢谢!

1 个答案:

答案 0 :(得分:2)

如果您使用核心数据,我建议1)。

2)没有多大意义。例如,假设A* a1A* a2引用相同的B* b。如果ABNSManagedObject的子类,则可以轻松地将此关系保存到文件中,然后从文件中检索。但是,如果ABNSManagedObject个实例作为ivars,那么如何维持这两个A引用一个B的关系?您将被迫编写大量的胶水代码,这些代码基本上由Core Data API提供。

如果您决定使用核心数据,我可以给出的一个非常重要的建议是从开始到结束仔细阅读Apple的文档非常非常,并且抵制从第一天开始编写代码的冲动。核心数据是一个相当大的API集合,在开始编写代码之前很好地掌握整个结构将为您节省很多天。