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, а в том, как я должен использовать ее в блоках завершения сетевой операции.
Я начну новое обсуждение, чтобы предоставить полную информацию о нем.