2015-10-19 2 views
1

У меня случайный сбой при выполнении MR_findFirstWithPredicate в фоновом режиме (не основной). Я использую NSManagedObjectContext.MR_defaultContext() для всех магических операций записи как в основной, так и в фоновом потоках - я думаю, что это корень проблемы, но я не уверен, как ее исправить.Волшебная запись: сбой при получении данных в фоновом потоке

Должен ли я использовать какой-либо другой контекст, когда выполняю операции в фоновом потоке? Я пробовал использовать NSManagedObjectContext.MR_context, но все выборки вернули нуль. Также попробовал NSManagedObjectContext.MR_newPrivateQueueContext, но приложение разбилось на каждую операцию выборки.

ответ

1

Вы правы, вы должны использовать контекст, который является NSPrivateQueueConcurrencyType для создания фона. Похоже, что MR_newPrivateQueueContext - это правильный вызов, но вы, вероятно, должны будете предоставить ему постоянный Store или parentContext. В этом случае вы можете установить MR_newPrivateQueueContext parentContext к defaultContext

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

Добавить также, не забудьте использовать 'performBlock:' или 'performBlockAndWait:' для операций на 'MR_newPrivateQueueContext' вы создали. – Mindy

Смежные вопросы