处理来自服务器的 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 的应用程序,我有两个实体,分别称为 foldernotes。因此,它们是文件夹-> 笔记之间的一对多关系。即 1 个文件夹 = 许多笔记。

我使用获取结果控制器来处理文件夹,它显示在 UITableView 上,当用户单击文件夹时,他会转到笔记表,该表显示特定文件夹内的笔记。

用户可以添加和删除文件夹/笔记。

一切正常。这里的一切都是离线的。

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

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

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

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

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

2) 我尝试使用

在后台队列中进行后期处理

dispatch_async(dispatch_get_global_queue(0,0), ^

但是在这里我观察到的是,我遇到了崩溃,它说 * 由于未捕获的异常“NSGenericException”而终止应用程序,原因:“* 集合 <0x1557ecd0>

【参考方案1】:

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

【讨论】:

嘿@danh,解决了这个问题,现在我正在后台线程上导入大数据 嘿@danh 请看这个***.com/questions/28413256/…

以上是关于处理来自服务器的 JSON 数据并添加/更新 CoreData 中的对象的主要内容,如果未能解决你的问题,请参考以下文章

我的来自 Typicode 的 JSON 服务器更新 ReactJS 中的数据库

如何使用 laravel 或仅使用本机 php 更新来自 mysql 数据库的 JSON 数据?

xpages JSON-RPC 服务处理来自回调函数的响应

JSON 服务器 - 使用 cronjob 更新数据库

如何使用 .NET Core 根据发布配置文件更新 appsettings.json?

使用 JQuery 处理来自帖子的数据的正确方法