MagicalRecord:如何执行后台保存

时间:2013-05-21 15:58:15

标签: ios magicalrecord-2.1

我正在构建一个新闻应用程序,它基本上使用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 个答案:

答案 0 :(得分:0)

在MagicalRecord中深入挖掘之后,似乎我的代码运行良好并且根本不会阻止主线程。

我的问题不在于MagicalRecord,而是在我应该在完成afnetworking操作块的方式上使用它。

我将开始一个新的讨论,以提供有关它的全部细节。