如何将某个上下文中的对象替换为其他上下文中的另一个对象?

时间:2015-09-13 10:26:12

标签: ios core-data concurrency merge nsmanagedobjectcontext

我要说,主要队列中的mainObject中有NSManagedObjectContext("主要背景")。另一方面,我在私人队列中的另一个privateObject中有NSManagedObjectContext("私有语境")。

我想从maon上下文中删除mainObject,并在私有上下文中插入privateObject。我试过这个:

[mainContext insertObject:privateObject];

但是我遇到了崩溃:

  

' NSManagedObject可能只在单个NSManagedObjectContext中(或由其观察)。'

我也试过了:

[mainContext objectWithID:privateObject.objectID];

和此:

NSManagedObject *managedObject = [privateContext existingObjectWithID:privateObject.objectID error:&error];
[mainContext insertObject:managedObject];

但我得到同样的错误。

有没有办法将上下文中的对象插入另一个上下文?或者我应该保存私有上下文,然后从主上下文中获取此类对象?或者还有另一种不同的更好的方法吗?

由于

1 个答案:

答案 0 :(得分:0)

为什么不复制对象的属性? 例如,在主上下文中创建一个新的新托管对象,并从私有托管对象复制属性。理解并且易于管理将非常清楚。