在托管对象上下文之间传递对象

时间:2009-07-16 09:19:19

标签: iphone objective-c core-data

我有一个带有2个托管对象上下文的iphone应用程序。我的一个上下文涉及一个选择器,它允许用户添加新记录,然后选择其中一个新记录。隐藏选择器后,将保存并丢弃该托管对象上下文。

然后,我想在第二个托管对象上下文中使用此选定对象,并将其添加(关联)到另一个对象。可以保存或删除第二个MOC的更改。这就是为什么创建第一个MOC以允许始终保存选择器中所做的更改,无论它们保存还是丢弃第二个MOC中的更改。

我希望这很清楚!我的问题是当用户从选择器中选择对象时,该对象驻留在需要使用它的不同上下文中。有没有办法可以在上下文之间传递对象?也许使用对象的ID(在它被保留之后)。

感谢您的帮助!

1 个答案:

答案 0 :(得分:5)

您在问题中提到了正确的解决方案。您不能在多个上下文之间传递NSManagedObjects,但是您可以传递NSManagedObjectID并使用它们来查询该ID所表示的对象的相应上下文。因此,只需保留数据(通过保存:),然后将ID传递给其他上下文,并使用它来询问相应对象的上下文。

根据您的想法,您可能需要安装mergeChangesFromContextDidSaveNotification:以便一个上下文中的更改自动反映在另一个上下文中。