2013-03-14 108 views
4

我正在使用核心数据来存储对象。我有一个NSManagedObject人和一个NSObject人。它们都具有相同的属性。 NSObject有一些方法。NSManagedObject;保持或加载到一个自定义的NSObject?

现在,我搜索Bob的核心数据。然后,我把那个NSManagedObject鲍勃,并将所有的属性复制到NSObject鲍勃,做我需要的东西。

这是否有意义,还是应该在NSManagedObject中创建所需的方法? NSManagedObject可以和NSObject一样对待吗?

+4

这实际上是一个深刻的问题。大多数人只是直接使用NSManagedObject,但是如果你想开发解耦和灵活的代码,你需要将核心数据抽象到某种持久层的后面,并在整个应用程序的其他部分中使用常规的NSObject域对象。 – 2013-03-14 19:40:51

回答

8

一个值得鼓励的方式是构建一个NSManagedObject子类的类别并在此类中实现您的自定义方法。这样你可以通过Xcode重新创建你的NSManagedObject子类,如果你的模式改变了,你的类别保持不变并且不受影响。

参考:例如关于核心数据的Paul Hegarty's/Stanfords iOS课程

0

是的,您可以像使用常规对象那样使用NSManagedObject--它不仅用于数据存储访问,还可以直接用作模型对象。在像这样的不同类的实例之间来回复制数据是很多额外的工作,没有任何好处。

由于您要添加自定义代码,因此我需要高度鼓励您使用mogenerator来生成您的NSManagedObject子类。如果/当您需要更改模型时,它会使您的自定义代码更加容易。