处理来自服务器的JSON数据并添加/更新CoreData中的对象

我正在使用coreData的应用程序,我有两个实体称为文件夹笔记 。 所以他们是文件夹 – >笔记之间的一对多关系 。 即1文件夹=许多笔记。

我已经使用了文件夹的抓取结果控制器 ,并且它显示在UITableView上,当用户单击一个文件夹时,他转到注释表,该注释表在特定文件夹内显示注释。

用户可以添加和删除文件夹/注释。

一切工作正常。 这里的一切都离线了。

现在我试图与服务器同步这个数据,以便我可以这个数据同步到多个设备。 我不做盲目同步,我只同步更改的数据。

我使用NSURLConnection默认是asynchronous的 ,它具有从服务器提供json数据的委托函数。

现在我正在尝试处理这个JsonData ,我正在遵循FindOrCreate方法。 所以如果文件夹/ Notes存在,那么只需要更新它或者创build一个新的文件并保存coreData。 我正在使用相同的managedObject和后处理发生在主线程。

面临的问题。 (这是现实世界的案例)

1)当拉动发生,用户可能会添加新的文件夹/笔记和UI应该是响应,但在我的情况下UI卡住了 。 所以我想知道如何stream畅地创build/更新来自服务器的新数据,并且UI也是响应式的。

2)我尝试使用后台队列中的后台进程

dispatch_async(dispatch_get_global_queue(0,0),^ {

}

但在这里我观察到的是,我得到一个崩溃,其中说*终止应用程序由于未捕获exception'NSGenericException',原因:'*集合<__ NSCFSet:0x1557ecd0>被列举时发生了变异。

这是一个常见的错误。 这意味着你不能同时循环一个集合和修改它。 假设你想循环并find要删除的对象。 不要在循环中删除,在临时集合中删除要删除的内容,并在循环之后删除它们。