处理来自服务器的 JSON 数据和 add/update CoreData 中的对象

Process JSON data coming from server and add/update the objects in CoreData

我正在开发使用 coreData 的应用程序,我有两个名为 foldernotes[=55 的实体=].所以它们是 一对多关系 文件夹-> 笔记之间。即 1 个文件夹 = 许多笔记。

我已经使用 fetch results controller 用于文件夹,它显示在 UITableView 上,当用户单击文件夹时,他会转到笔记 table,显示特定文件夹内的注释。

用户可以添加和删除folders/Notes.

一切正常。这里的一切都处于离线状态。

现在我正在尝试将此数据与服务器同步,以便我可以将其同步到多个设备。 我不做盲同步,我只同步变化的数据。

我正在使用 NSURLConnection,默认情况下它是 异步,它具有从服务器提供 json 数据的委托函数。

现在我正在尝试处理这个 JsonData 并且我正在遵循 FindOrCreate 方法。因此,如果 folder/Notes 存在,则只需更新它或创建新的并将其保存在 coreData 中。我正在使用 相同的 managedObject 并且 post 进程发生在主线程上。

遇到的问题。 (真实案例)

1) 当 pull 发生时,用户可能正在添加新的 folders/notes 并且 UI 应该有响应,但在我的 案例中 UI 卡住了。所以我想知道我们如何流畅地create/update来自服务器的新数据并且UI也是响应的。

2) 我尝试使用

在后台队列中执行 post 进程

dispatch_async(dispatch_get_global_queue(0,0), ^{

}

但是我观察到的是,我遇到了崩溃,它说 * 由于未捕获的异常 'NSGenericException' 而终止应用程序,原因:'* 集合 <__NSCFSet: 0x1557ecd0> 在枚举时发生了变异。'

这是一个常见错误。这意味着您不能同时循环和修改集合。假设您希望循环查找要删除的对象。不要在循环中删除,把要删除的东西放在一个临时集合中,循环结束后再删除。