NSManagedObject类对象可以用作模型吗?

时间:2012-06-19 05:40:01

标签: iphone objective-c ios core-data

在选择是直接使用NSManagedObjet类对象作为模型还是为模型创建单独的classess以及创建数据映射器以将数据从这些模型类映射到NSManagedObject类对象时,我有点困惑。 将Core Data对象用作模型有什么危害吗?这两种方法的优点和缺点是什么?

提前致谢,

此致

tek3

2 个答案:

答案 0 :(得分:3)

我读了你的问题,我认为你不是要问是否直接使用NSManagedObject或是否要继承NSManagedObject,而是你应该把你的模型作为单独的类,通过自己编写的显式方法使用Core Data。

核心数据旨在充当应用程序的模型层。我没有看到拥有自己的模型类,为它们编写接口以及在幕后核心数据中实现它的任何实际好处,除非你真的需要完全放弃核心数据的自由。

我建议您将模型类创建为NSManagedObject的子类。除了核心数据提供的内容之外,您可以以任何您认为必要的方式扩展它们,但同时您的模型类将从核心数据框架中获得全部好处:错误,缓存,数据完整性保证,级联删除等。 ..

答案 1 :(得分:1)

如果您只使用NSManagedObject,则在引用属性和关系时,您将无法获得方便的“dot.notation”。

此外,您必须使用valueForKey检索所有值,并使用setValueForKey后跟字符串进行设置。这可能非常容易出错并且很麻烦,并且得到的代码几乎不像点符号那么可读。

最后,在对象类中,您可以实现各种附加功能。你会把这个代码放在哪里呢?请记住封装的原理,它有助于生成独立且可重用的代码。