MagicalRecord: как выполнить сохранение в фоновом режиме

Я создаю новостное приложение, которое в основном извлекает данные с удаленного сервера, используя AFNetworkOperation (все операции помещаются в NSOperationQueue для того, чтобы правильно управлять процессом синхронизации и прогрессом).

Каждый блок завершения каждой AFNetworkOperation создает / удаляет / обновляет основные объекты данных.

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

    dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0);

    dispatch_async(queue, ^{
         NSLog(@"saveInBackground : starting...");

         [[NSManagedObjectContext defaultContext] saveToPersistentStoreWithCompletion:^(BOOL success, NSError *error) {
              NSLog(@"saveInBackground : finished!");
         }];
    });

К сожалению, он всегда блокирует основной поток во время моей операции сохранения.

Я мог бы не использовать MagicalRecord должным образом, поэтому любые советы будут приветствоваться.

1 ответ

Решение

После более глубокого изучения MagicalRecord мой код работает хорошо и вообще не блокирует основной поток.

Моя проблема не в MagicalRecord, а в том, как я должен использовать ее в блоках завершения сетевой операции.

Я начну новое обсуждение, чтобы предоставить полную информацию о нем.

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