Сетевая магическая запись и правильное использование

Я строю новостное приложение на основе AFNetworking и MagicalRecord. Я должен выполнить фоновую синхронизацию с сервером, чтобы: 1) извлечь существующие категории 2) для каждой категории восстановить все статьи.

Поэтому я использую nsoperationqueue, в котором я добавляю все необходимые сетевые операции. Я создаю очередь отправки и устанавливаю ее как последовательность всех операций сетевого взаимодействия, чтобы блоки завершения не выполнялись в основном потоке.

В конце синхронизации я выполняю сохранение, поэтому все данные сохраняются в постоянном хранилище.

Я сталкиваюсь со следующими проблемами: Невозможно установить отношения, поскольку статьи и категории создаются в разных потоках: у меня всегда есть исключение. Когда и как я должен сохранить свои основные объекты данных? Прочитав тысячи статей о магической записи, я полностью теряюсь в этом вопросе.

Спасибо всем мастеру ios этого замечательного сайта:)

1 ответ

Решение

Наконец я поняла, что делаю не так.

Использование MagicalRecord в отдельных потоках было целью, так как MagicalRecord создает разные NSManagedContext для разных потоков.

После глубокого прочтения документации Apple по CoreData и нескольким потокам я укажу, что работа над разными потоками может выполняться на одном и том же NSManagedContext, если вы можете гарантировать, что ни один из объектов не будет затронут одновременно.

Таким образом, с помощью последовательного dispatch_queue с выделенным и единственным NSManagedObjectContext, он сделал свою работу.

Надеюсь, что это может помочь другим.

Другие вопросы по тегам