首页 > 解决方案 > 设计方法减少不必要的 api 调用并在本地存储数据

问题描述

我正在开发一个带有 Objective-C 的 iOS 应用程序。通过我的“GET”请求,我得到了大量格式如下的 json 数据。

[ { @"value":@1,@"day":@2,@"hour":@1} , {@"value":@1,@"day":@1,@"hour":@ 1 }....]

注意,这个数组总是包含 168 个固定数量的对象。

在我的应用程序中,我有不同的 UI 控件,它们假设显示所获得数据的不同块。例如单击“Button1”假设显示 ob1---obj10 等等。

理论上一切正常,但我对我的设计方法不满意。因为每次按下按钮,我都会调用 api 以再次获取整个数据集并提取所需的数据。

理想情况下,我认为应该在第一次“GET”请求时将数据存储在本地,并且我的应用程序中的不同类应该能够提取所需的信息。

同样的方法应该适用于我的“POST”请求。我对我有哪些选择以及在这种情况下的最佳做法感到困惑。我可以想到以下

  1. 将数据存储在数组中?
  2. 将数据存储在 sqlite 之类的数据库中?
  3. 最后plists?
  4. 使用核心数据有点矫枉过正?

标签: iosobjective-clocal-storage

解决方案


168 条记录,每条大约 40 字节,提供大约 7 Kb 的数据,如果您的 API 服务器支持 gzip 压缩,可能会减少到 2 Kb 左右。根据现代网络标准,这不算什么。

您可以完全下载它,解析并保存到视图控制器中的变量中。我建议创建一个“模型”类(如在MVC中)来很好地包装您的数据并分解行选择逻辑。

CoreData(或 SQLite)对于这种数据量来说绝对是一种过度杀伤力。

如果您需要离线支持,您可以使用 plist 或NSKeyedArchiver之类的东西将数据缓存到磁盘,即您希望应用程序在没有互联网连接的情况下工作。


推荐阅读