核心数据:非法尝试在不同上下文中的对象之间建立关系“状态媒体”

时间:2018-09-07 11:12:55

标签: ios swift core-data

我正在我的应用程序上使用Core Data。在轻量级迁移和代码升级到Swift 4.0之后,我面临的问题很少。

问题1

从上下文中删除托管对象0x7fd0881de320(0x7fd0884589b0)。

问题2

由于未捕获的异常'NSInvalidArgumentException'而终止了应用程序,原因:'在不同上下文中非法尝试在对象之间建立关系'statusmedia'(source =(entity:Status; id:0x10f6dc280

终止问题非常严重。

  

请注意,我只使用了一个上下文(默认一个,不是私有的)

让我知道是否需要我的更多信息...

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

不幸的是,很多事情可能导致这种情况,但要检查的最佳人选是:

  1. 您的模型中有关于关系的删除规则。删除该对象时,“级联”选项应删除相关的对象。如果不期望如此,则很容易产生这种错误。
  2. 您要删除一个对象,但仍要使用它。这是一个逻辑错误,但可以通过标记已删除的托管对象(将已删除对象的ID放入某个数组中)然后检查是否标记了失败的对象(该ID在该数组中存在)来轻松确认。
  3. 您正在使用多个上下文,但没有意识到。诸如获取结果控制器之类的一些工具是潜在的候选对象。

还有其他可能性,但我将首先从提到的这些开始。