在托管对象上下文之间传递对象
Posted
技术标签:
【中文标题】在托管对象上下文之间传递对象【英文标题】:Passing objects between managed object contexts 【发布时间】:2009-07-16 09:19:18 【问题描述】:我有一个带有 2 个托管对象上下文的 iphone 应用程序。我的一个上下文处理一个选择器,它允许用户添加新记录,然后选择这些新记录之一。一旦选择器被隐藏,该托管对象上下文将被保存并丢弃。
然后我想在我的第二个托管对象上下文中使用这个选定的对象,并将它添加(关联)到另一个对象。这第二个 MOC 的更改可能会被保存或删除。这就是为什么创建第一个 MOC 以允许始终保存在选择器中所做的更改,无论它们是保存还是放弃第二个 MOC 中的更改。
我希望这很清楚!我的问题是,当用户从选择器中选择对象时,该对象位于与需要使用它的位置不同的上下文中。有没有办法在上下文之间传递对象?也许使用对象的 ID(在它被持久化之后)。
感谢您的帮助!
【问题讨论】:
【参考方案1】:您在问题中提到了正确的解决方案。您不能在多个上下文之间传递 NSManagedObjects,但可以传递 NSManagedObjectIDs 并使用它们来查询由该 ID 表示的对象的适当上下文。因此,只需将数据持久化(通过保存:),然后将 ID 传递给其他上下文并使用它来向上下文询问适当的对象。
根据您想要执行的操作,您可能需要安装 mergeChangesFromContextDidSaveNotification: 以便一个上下文中的更改自动反映在另一个上下文中。
【讨论】:
以上是关于在托管对象上下文之间传递对象的主要内容,如果未能解决你的问题,请参考以下文章
为啥我会得到:非法尝试在不同上下文中的对象之间建立关系...