我们偶尔会从我们的用户那里收到崩溃报告(我们正在使用一个崩溃报告程序包将崩溃发送到我们的服务器),并显示以下错误:
“非法尝试在不同上下文中的对象之间建立关系 '...'”
(不同的报告可能有不同的关系,并不是所有的报告都一样)。
这似乎很容易,除了:
initWithEntity:insertIntoManagedObjectContext:
使用上下文分配的(它们都不是通过简单的 init 分配的)。所以基本上我们被卡住了。
任何想法将不胜感激。
最佳答案
每当我在主线程中使用 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/