У меня есть два объекта A и B. A имеет отношение ко многим для B. A и B имеют разные управляемые объекты контекста контекста и контекста. Мне нужно добавить управляемый объект B к управляемому объекту A после изменения некоторых атрибутов B в контексте B, но это невозможно, потому что они не в одном контексте. Итак, как я могу передавать изменения в contextB в contextA, не сохраняя его в persistentStore? пс. если вы хотите знать, почему мне нужно два разных контекста, вы можете переместиться по этой ссылке undo all changes made in a view controller.two managedObjectContext с одним управляемым объектом
1
A
ответ
-1
Скопируйте управляемый объект из одного контекста в другой, вы можете использовать идентификатор объекта объекта, как показано в следующем примере.
NSManagedObjectID *objectID = [managedObject objectID];
NSManagedObject *copy = [contextB objectWithID:objectID];
После копирования вы можете добавить объект B объекта A.
Надежда это поможет вам.
На самом деле в контексте2 уже есть объект с тем же идентификатором объекта. Таким образом, [context2 objectWithID: objectID] не будет работать. Если я сначала не удалю объект в контексте2. –
Не нужно удалять объект, который вы можете заменить старым объектом скопированным объектом. – iamsult
Это не работает, поскольку в контексте А. уже есть объект B. Он не смог обновить объект B в контексте A с объектом B в контексте B. –