NSManagedObject;保留或加载到自定义 NSObject 中?
Posted
技术标签:
【中文标题】NSManagedObject;保留或加载到自定义 NSObject 中?【英文标题】:NSManagedObject; keep or load into a custom NSObject? 【发布时间】:2013-03-14 19:37:24 【问题描述】:我正在使用 Core Data 来存储对象。我有一个NSManagedObject
人和一个NSObject
人。它们都具有相同的属性。 NSObject
有一些方法。
现在,我在 Core Data 中搜索 Bob。然后我把NSManagedObject
Bob 的所有属性复制到NSObject
Bob 并用它做我需要的事情。
这有意义还是我应该在NSManagedObject
中创建所需的方法? NSManagedObject
可以和NSObject
一样对待吗?
【问题讨论】:
这其实是一个很深的问题。大多数人只是直接使用 NSManagedObject,但如果你想开发解耦和灵活的代码,你会希望将核心数据抽象在某种持久层后面,并在应用程序的其余部分使用常规的 NSObject 域对象。 【参考方案1】:一种鼓励的方法是构建一个 NSManagedObject 子类的类别并在该类别中实现您的自定义方法。这样,如果您的架构更改并且您的类别保持不变且不受影响,您可以通过 Xcode 重新创建 NSManagedObject 子类。
参考:例如Paul Hegarty/Stanfords 关于核心数据的 ios 课程
【讨论】:
【参考方案2】:是的,您可以像普通对象一样使用NSManagedObject
——它不仅用于数据存储访问,还可以直接用作模型对象。像这样在不同类的实例之间来回复制数据是一项没有任何好处的额外工作。
由于您要添加自定义代码,我高度鼓励您使用 mogenerator 来生成您的 NSManagedObject
子类。如果/当您需要更改模型时,它将使您的自定义代码保持在原位变得容易得多。
【讨论】:
以上是关于NSManagedObject;保留或加载到自定义 NSObject 中?的主要内容,如果未能解决你的问题,请参考以下文章
CoreData:第一次加载 NSManagedObject 时未访问自定义属性访问器
从托管对象上下文中删除后使用保留的 NSManagedObject 是不是安全?