如何用另一个上下文中的另一个对象替换某个上下文中的对象?
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
,我不知道如何处理,你知道任何示例/教程吗?以上是关于如何用另一个上下文中的另一个对象替换某个上下文中的对象?的主要内容,如果未能解决你的问题,请参考以下文章