如何用另一个上下文中的另一个对象替换某个上下文中的对象?

Posted

技术标签:

【中文标题】如何用另一个上下文中的另一个对象替换某个上下文中的对象?【英文标题】:How to replace an object in a certain context with another object in other context? 【发布时间】:2015-09-13 10:26:12 【问题描述】:

比方说,我在主队列(“主上下文”)中的 NSManagedObjectContext 中有一个 mainObject。另一方面,我在私有队列(“私有上下文”)中有另一个 NSManagedObjectContext 中的 privateObject

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

[mainContext insertObject:privateObject];

但我遇到了崩溃:

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

我也试过这个:

[mainContext objectWithID:privateObject.objectID];

还有这个:

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

但我得到了同样的错误。

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

谢谢

【问题讨论】:

你应该保存你的子上下文,然后与你的父上下文合并:) @MohamadFarhand 我的上下文没有父/子关系,因为我需要在合并更改之前创建新对象,我无法直接使用源对象... 【参考方案1】:

为什么不复制对象的属性? 例如,在主上下文中创建一个新的新托管对象并从私有托管对象复制属性。理解起来会很清楚,也很容易管理。

【讨论】:

我管理的对象依次有两层嵌套对象,可能不是那么容易或快速......我想我需要找到方法来进行深度克隆NSManagedObject,我不知道如何处理,你知道任何示例/教程吗?

以上是关于如何用另一个上下文中的另一个对象替换某个上下文中的对象?的主要内容,如果未能解决你的问题,请参考以下文章

如何用sed中的另一个路径替换路径?

如何用熊猫列中的另一个字符串替换子字符串[关闭]

如何用另一个表中的另一列替换一列数据?

编辑时如何用导航控制器中的另一个 UIBarButtonItem 替换后退按钮?

如何用angular中的另一个数组的子对象创建一个数组

用bash中的另一个文件替换整个文件