【发布时间】:2011-11-06 20:06:21
【问题描述】:
我正在构建一个应用程序,它从 Web API 接收许多列表,并允许用户保存一些列表以供离线查看。我通常的做法是:
- 从 API 中获取数据,并为每个数据创建一个新的列表对象
- 如果用户选择将对象保存到数据库中。
但这是一个 Core Data 应用程序,所以上下文是保存的内容,而不是对象。在这种情况下,上面会变成这样:
- 从 API 获取数据,并为每个数据创建一个非托管列表对象
- 如果用户选择将对象移动到托管上下文中,然后保存上下文
拥有非托管和托管版本的列表对象的一种方法是拥有两个类,例如ManagedListing 和 UnmanagedListing - 但这是一种非常重复的做法。
我想要让Listing成为NSManagedObject的子类;在没有 NSManagedObjectContext 的情况下初始化它们;然后当我想保存一个时,我要么设置它的上下文,要么将它的属性复制到上下文中的一个新列表中。
我可以在没有特定的 NSManagedObjectContext 中创建 NSManagedObject 的实例吗?如果有,怎么做?
【问题讨论】:
-
你为什么不把它们全部放在一个上下文中,然后如果你不需要它们就删除它们。或者,您可以将它们全部设为单独的对象,然后通过将每个对象的信息传输到 ManagedObject obj 来保存它们。
-
如果创建和删除是瞬态对象的模式,有没有办法取消删除它们?我不喜欢两个类的解决方案,因为它会增加维护它们之间关系的工作。
-
你有
[context deleteObject:]和[context insertObject:]可以让你在你的对象是否“插入”到托管对象上下文之间进行更改。当你想保存当前布局时,只需调用[context save:] -
我可以在拨打
[context deleteObject:]之后拨打[context insertObject:]?