魔法记录:在后台线程中获取数据时崩溃

时间:2015-10-19 23:47:24

标签: ios core-data magicalrecord

当我在后台(非主要)线程中执行MR_findFirstWithPredicate时,我发生了随机崩溃。我在主线程和后台线程上使用NSManagedObjectContext.MR_defaultContext()进行所有魔法记录操作 - 我认为这是问题的根源,但我不确定如何修复它。

当我在后台线程中执行操作时,我应该使用其他一些上下文吗?我尝试使用NSManagedObjectContext.MR_context但是所有提取都返回了nil。还尝试了NSManagedObjectContext.MR_newPrivateQueueContext,但app在每次获取操作时崩溃。

1 个答案:

答案 0 :(得分:2)

你是对的,你应该使用NSPrivateQueueConcurrencyType的上下文来做背景。听起来MR_newPrivateQueueContext是正确的调用,但您可能必须给它一个持久的Store或parentContext。在这种情况下,您可以将MR_newPrivateQueueContext parentContext设置为defaultContext

let defaultContext = NSManagedObjectContext.MR_defaultContext()
let privateContext = NSManagedObjectContext.MR_newPrivateQueueContext
privateContext.parentContext = defaultContext