我正在构建一个新闻应用程序,它基本上使用 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,因此欢迎任何建议。