处理来自服务器的 JSON 数据和 add/update CoreData 中的对象
Process JSON data coming from server and add/update the objects in CoreData
我正在开发使用 coreData 的应用程序,我有两个名为 folder 和 notes[=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> 在枚举时发生了变异。'
这是一个常见错误。这意味着您不能同时循环和修改集合。假设您希望循环查找要删除的对象。不要在循环中删除,把要删除的东西放在一个临时集合中,循环结束后再删除。
我正在开发使用 coreData 的应用程序,我有两个名为 folder 和 notes[=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> 在枚举时发生了变异。'
这是一个常见错误。这意味着您不能同时循环和修改集合。假设您希望循环查找要删除的对象。不要在循环中删除,把要删除的东西放在一个临时集合中,循环结束后再删除。