首页 > 解决方案 > 在 iOS 中处理和持久化 JSON 数据的选项

问题描述

我正在使用一个 iOS 应用程序,该应用程序使用 REST API 连接到后端服务器以检索配置数据。配置数据以 JSON 格式接收,并最终使用 NSUserDefaults 保存在本地。一条配置数据的一般流程如下:

配置数据是相当静态的(它不会随着时间的推移发生太大变化),但应用程序确实需要每隔一段时间(即 30 分钟)刷新一次。迄今为止的方法是每次只转储和替换本地数据,而不是尝试实现需要完全重新设计的增量更新。

只要配置数据相当小,这种方法似乎就可以正常工作。但是,最近我们看到了大于 20MB 的 JSON 配置数据。在这些情况下,上述方法不起作用,因为它似乎需要太多内存来处理端到端。在 xcode 性能选项卡中,应用程序的内存峰值超过 500MB,并且进程通常会崩溃,至少在旧设备(即 iPhone 6)上是这样。

在我开始重新设计整个过程之前,我想知道是否有更多的优化仍然允许转储和替换,但内存占用更小。如果需要映射,是否有更有效的方法可以从 HTTP 响应到某种持久存储?核心数据是否非常适合转储和替换方法?我想不是。

标签: iosjsonnsuserdefaults

解决方案


如果内存是您主要关心的问题,您可以查看https://github.com/stig/json-framework,它可以让您以“分块”方式进行解析,因此您不需要将整个 JSON 文档放入随时记忆。


推荐阅读