iphone - 偶尔 "Illegal attempt to establish a relationship ' .. .' between objects in different contexts"

标签 iphone ipad core-data nsmanagedobjectcontext

我们偶尔会从用户那里收到崩溃报告(我们使用崩溃报告程序包将崩溃发送到我们的服务器),并出现以下错误:

“非法尝试在不同上下文中的对象之间建立关系‘...’”

(不同的报表可能有不同的关系,并非所有报表都相同)。

这看起来很简单,除了:

  1. 我们的代码中只有一个 NSManagedObject - 来自 App 委托(delegate)的单例。

  2. 除了主线程之外,我们不使用任何线程。

  3. 所有对象都是使用 initWithEntity:insertIntoManagedObjectContext: 使用上下文进行分配的(没有一个对象是通过简单的 init 进行分配的)。

  4. 在我们的测试(数千次运行)中从未发生过错误。

所以基本上我们陷入了困境。

任何想法都会受到赞赏。

最佳答案

每当我在主线程中使用 Core Data 时,我都会在处理上下文的任何方法中放置一个 NSAssert ,以确保我知道主线程中发生的所有事情。像这样的事情:

NSAssert([NSThread isMainThread], @"This method is not in the main thread");

尝试使用它来双重/三重/四重检查事情是否发生在您认为的地方。

关于iphone - 偶尔 "Illegal attempt to establish a relationship ' .. .' between objects in different contexts",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12042227/

相关文章:

iphone - 禁用栏按钮文本颜色更改为白色?

ios - Xcode 7 需要很长时间才能生成构建。它几乎卡在管理器窗口中

iphone - 确定 CGPoint 是否在图像区域内

ios - 链接的 TTTAttributedLabel 和弹出窗口

ios - 如何使 NSSortDescriptor 不按字母顺序排列?

iphone - 核心数据 : Setting Entity. 属性、类型问题

iphone - iOS 5 iPhone 4 Interface Builder 突然间我的所有 View 都变得透明了。怎么修?

ios - 我的 iPad 横向启动画面跳转到纵向

iphone - 将图像保存在 Core Data 中以便在 UITableView 中使用

ios - 从 Watch 应用程序调用父应用程序时如何使用文件加密?