【问题标题】: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 我的上下文没有父/子关系,因为我需要在合并更改之前创建新对象,我无法直接使用源对象...

标签: ios core-data concurrency merge nsmanagedobjectcontext


【解决方案1】:

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

【讨论】:

  • 我管理的对象依次有两层嵌套对象,可能不是那么容易或快速......我想我需要找到方法来进行深度克隆NSManagedObject,我不知道如何处理,你知道任何示例/教程吗?
猜你喜欢
  • 1970-01-01
  • 2018-01-14
  • 1970-01-01
  • 2012-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-14
相关资源
最近更新 更多