加载,保存和重新加载数据的最佳方法

时间:2013-06-26 15:09:28

标签: iphone objective-c sqlite uitableview

我认为我的iPhone应用程序存在性能问题。

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

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

第1步:按网址请求获取JSON数据字符串

我将通过带有一些限制值的URL-Request(例如city_id和last_update_time)向MySQL数据库发起请求以限制结果。

步骤2:将JSON-Objects保存到iPhone上的SQLite3数据库。

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

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

TableView将使用此数组。

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

程序中是否存在重大错误?我应该在另一个线程中加载数据,但是此时我应该在视图中显示什么?

最好的方法是什么?

2 个答案:

答案 0 :(得分:4)

以下是一些想法:

  1. 使用AFNetworking让自己的生活更轻松。它使得从Web服务获得JSON返回异步且简单。
  2. 而不是直接使用SQLite Core Data。使用它来实现应用程序中任何真正的持久性要容易得多。
  3. 您可以使用NSFetchedResultsController直接从Core Data加载表格视图,而不是以这种方式手动执行此操作,并将结果显示在Core Data中(请参阅步骤2)。这会为您处理很多事情,例如响应更改,高效的内存管理,处理数据更改等。

答案 1 :(得分:2)

  • 将json文件嵌入到您的应用包中,该文件包含来自json解析的当前数据。这将首次使用,仅用于案例,
  • 每当设备在线时更新您的json文件,但只有在您的解析版本与您的解析版本不同时才更新。
  • 在设备离线时随时使用该json文件
  • 由于您的捆绑包中的json文件始终是最新版本,因此请将表数据加载到其中。

希望这些能帮到你。

相关问题