Сетевая магическая запись и правильное использование
Я строю новостное приложение на основе AFNetworking и MagicalRecord. Я должен выполнить фоновую синхронизацию с сервером, чтобы: 1) извлечь существующие категории 2) для каждой категории восстановить все статьи.
Поэтому я использую nsoperationqueue, в котором я добавляю все необходимые сетевые операции. Я создаю очередь отправки и устанавливаю ее как последовательность всех операций сетевого взаимодействия, чтобы блоки завершения не выполнялись в основном потоке.
В конце синхронизации я выполняю сохранение, поэтому все данные сохраняются в постоянном хранилище.
Я сталкиваюсь со следующими проблемами: Невозможно установить отношения, поскольку статьи и категории создаются в разных потоках: у меня всегда есть исключение. Когда и как я должен сохранить свои основные объекты данных? Прочитав тысячи статей о магической записи, я полностью теряюсь в этом вопросе.
Спасибо всем мастеру ios этого замечательного сайта:)
1 ответ
Наконец я поняла, что делаю не так.
Использование MagicalRecord в отдельных потоках было целью, так как MagicalRecord создает разные NSManagedContext для разных потоков.
После глубокого прочтения документации Apple по CoreData и нескольким потокам я укажу, что работа над разными потоками может выполняться на одном и том же NSManagedContext, если вы можете гарантировать, что ни один из объектов не будет затронут одновременно.
Таким образом, с помощью последовательного dispatch_queue с выделенным и единственным NSManagedObjectContext, он сделал свою работу.
Надеюсь, что это может помочь другим.