我在我的项目中使用了coredata,有时候,并非总是如此,它崩溃了,我得到了错误,如屏幕截图所示。
我正在使用类似于https://developer.apple.com/library/watchos/documentation/Cocoa/Conceptual/CoreData/Concurrency.html
的coredata有人可以帮助我理解这一点,并指导我解决问题。
答案 0 :(得分:2)
“多线程违规”部分是一个很大的线索。事实上,你似乎在不同的线程中做了与GCD相关的事情。
核心数据不是线程安全的。您无法在一个线程上获取托管对象并在另一个线程上使用它。由于您没有发布任何代码,因此无法确切地说明在这种特定情况下出了什么问题。您应按照this blog post中的说明开启com.apple.CoreData.ConcurrencyDebug
,这样可以帮助您缩小崩溃的原因。
常见的错误,可能会或可能不会适用于此错误,但未使用performBlock
和/或performBlockAndWait
。您需要为所有与Core Data相关的操作执行此操作,甚至可以像读取托管对象属性的值那样简单。