1

我有两个实体A和B.A与B有一个多对多的关系.A和B有不同的managedObjectContext contextA和contextB。我需要在上下文B中修改B的某些属性之后,将托管对象B添加到托管对象A,但这是不可能的,因为它们不在相同的上下文中。那么我怎么能将contextB中的变化传递给contextA而不将其保存到persistentStore? PS。如果你想知道为什么我需要两种不同的环境,你可以通过这个链接运行undo all changes made in a view controller两个managedObjectContext与一个managedObject

回答

-1

将托管对象从一个上下文复制到另一个上下文,您可以使用该对象的对象ID,如下例所示。

NSManagedObjectID *objectID = [managedObject objectID]; 

NSManagedObject *copy = [contextB objectWithID:objectID]; 

复制后,可以添加对象B到对象A.

希望这有助于你之后。

+0

实际上context2中已经有一个对象具有相同的objectID。所以[context2 objectWithID:objectID]将不起作用。除非我先删除context2中的对象。 –

+0

无需删除对象,您可以用复制的对象替换旧对象。 – iamsult

+0

它不起作用,因为上下文A中已经有一个对象B.它不能使用上下文B中的对象B更新上下文A中的对象B. –