如何使用需要排序的异步内容正确填充UITableView

时间:2014-03-11 11:21:03

标签: uitableview ios7 nssortdescriptor nsmetadataquery

我有一堆存储在iCloud中的各种大小的文件(> 100)。我有NSMetadataQuery返回这些文件。它们以随机顺序从NSMetadataQuery对象报告给我的应用程序。

我打开它们并提取几个字符串,然后将其排序并显示在UITableView中。

我尝试了两种方法: A)每次加载每个文件,对文件信息数组进行排序,并在reloadData上调用UITableView。 和B)等待所有文件加载,然后对“完整”数组进行排序,然后调用reloadData一次。

选项B显然更好,但基本上需要用户查看结果的时间。 一个人怎么做到最好?

我是否需要将我在UITableView中显示的数据提取到另一个文件(即PLIST)中,这样我可以加载更快并在实际数据在后台加载时显示它? 或者我是否需要基本上通过跟踪数组来扩展实现A,然后为随后因排序而更改的每一行调用reloadRowsAtIndexPaths:

此方案的最佳做法是什么?

由于

1 个答案:

答案 0 :(得分:0)

从用户的角度来看,速度越快越好,看到某些东西,甚至是不完整的东西,比看不到任何东西更好。所以:

  1. 如果您可以维护一个列出此信息的索引文件,请将其用于显示并仅下载您需要的内容(例如您的Plist创意,但可能存储在iCloud中,可能存储在键/值存储中)
  2. 如果您需要下载文件信息,请向用户显示一个活动指示符,以便他们知道您仍然在工作,并在获取项目时将项目添加到用户界面(您的选项A)
  3. reloadData更改为reloadRowsAtIndexPaths:可以获得更好的动画,因此很高兴但不是必需的,并且不会让事情变得更快。