处理来自服务器的 JSON 数据并添加/更新 CoreData 中的对象
Posted
技术标签:
【中文标题】处理来自服务器的 JSON 数据并添加/更新 CoreData 中的对象【英文标题】:Process JSON data coming from server and add/update the objects in CoreData 【发布时间】:2015-02-03 11:54:08 【问题描述】:我正在开发使用 coreData 的应用程序,我有两个实体,分别称为 folder 和 notes。因此,它们是文件夹-> 笔记之间的一对多关系。即 1 个文件夹 = 许多笔记。
我使用获取结果控制器来处理文件夹,它显示在 UITableView 上,当用户单击文件夹时,他会转到笔记表,该表显示特定文件夹内的笔记。
用户可以添加和删除文件夹/笔记。
一切正常。这里的一切都是离线的。
现在我正在尝试与服务器同步此数据,以便我可以将其同步到多个设备。 我不做盲同步,我只同步变化的数据。
我正在使用 NSURLConnection,默认情况下是 异步,它具有从服务器提供 json 数据的委托函数。
现在我正在尝试处理这个 JsonData 并且我正在遵循 FindOrCreate 方法。因此,如果文件夹/Notes 存在,则只需更新它或创建新文件夹并将其保存为 coreData。我正在使用相同的 managedObject 并且后处理发生在主线程上。
面临的问题。 (这是真实世界的案例)
1) 当拉取发生时,用户可能正在添加新的文件夹/笔记,并且 UI 应该是响应式的,但在我的 情况下 UI 卡住了。所以我想知道我们如何流畅地创建/更新来自服务器的新数据,并且 UI 也是响应式的。
2) 我尝试使用
在后台队列中进行后期处理dispatch_async(dispatch_get_global_queue(0,0), ^
但是在这里我观察到的是,我遇到了崩溃,它说 * 由于未捕获的异常“NSGenericException”而终止应用程序,原因:“* 集合 <0x1557ecd0>0x1557ecd0>
【参考方案1】:这是一个常见错误。这意味着您不能同时循环和修改集合。假设您希望循环并查找要删除的对象。不要在循环中删除,将要删除的东西放在临时集合中,并在循环后将其删除。
【讨论】:
嘿@danh,解决了这个问题,现在我正在后台线程上导入大数据 嘿@danh 请看这个***.com/questions/28413256/…以上是关于处理来自服务器的 JSON 数据并添加/更新 CoreData 中的对象的主要内容,如果未能解决你的问题,请参考以下文章
我的来自 Typicode 的 JSON 服务器更新 ReactJS 中的数据库
如何使用 laravel 或仅使用本机 php 更新来自 mysql 数据库的 JSON 数据?