3

我想我的 iPhone 应用程序有一点性能问题。

我想向您展示我如何从 Internet 加载数据,将它们存储在电话上并重新加载它们以将其打印到表格视图上。我在应用程序上有几个模块,所以我希望没问题,如果我解释一下我过去常常做的一般方式,也许你们中的一个人有一个想法。

数据量约为 250 个数据集,包含 10-20 个数据字段(整数/文本)。

第 1 步:通过 URL 请求获取 JSON 数据字符串

我将通过带有一些限制值(例如 city_id 和 last_update_time)的 URL 请求开始对 MySQL 数据库的请求,以限制结果。

第 2 步:将 JSON 对象保存到 iPhone 上的 SQLite3 数据库中。

我会这样做,因为我也喜欢在离线模式下使用数据。这部分应该是重量级的,因为它需要总时间的3/4。我遍历这些对象并检查我是否曾经保存过这个对象。(这里我使用 import_id 来识别 MySQL-Database-Objects)如果我找到了它,我会更新这个数据集,否则我会插入它。

第 3 步:从 SQLite 重新加载数据并将其放入 NSMutableArray

这个数组将被 TableView 使用。

注意:数据将在主线程中加载。其他线程将用于延迟加载一些拇指或显示旋转轮。

程序有很大的错误吗?我应该在另一个线程中加载数据,但此时我应该在视图中显示什么?

什么是最好的方法?

4

2 回答 2

4

这里有一些想法:

  1. 使用AFNetworking让您的生活更轻松。它使从 Web 服务获取 JSON 返回异步且容易。
  2. 而不是直接使用 SQLite 使用Core Data。将它用于应用程序中的任何真正持久性比其他任何东西都容易得多。
  3. 无需手动执行此操作,而是使用 Core Data 中的结果(参见步骤 2),您可以使用NSFetchedResultsController直接从 Core Data 加载表视图。这会为您处理很多事情,例如响应更改、高效的内存管理、处理数据的更改等。
于 2013-06-26T15:26:36.793 回答
2
  • 将一个 json 文件嵌入到您的应用程序包中,该文件涉及来自您的 json 解析的当前数据。这将用于第一次离线使用,仅用于案例,
  • 每当设备在线时更新您的 json 文件,但仅当您的解析版本与您的不同时才更新。
  • 在您的设备离线时使用该 json 文件
  • 由于捆绑包中的 json 文件始终是最新版本,因此请从中加载表数据。

希望这些对您有所帮助。

于 2013-06-27T10:59:02.810 回答