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 を適切に使用していない可能性があるため、アドバイスを歓迎します。