如果没有数据发生变化,如何避免调用reloadData?

时间:2017-10-13 17:39:24

标签: swift database uitableview

我有一个应用程序,它使用存储在数组中的信息填充UITableView。每当用户打开该特定页面时,我在viewDidLoad()中都有一个函数,通常会执行以下操作:

override func viewDidLoad(){
    tableArray.removeAll()
    //query information from a database
    //populate tableArray with this information
    self.table.reloadData()
}

这使我能够做的是在加载页面时查询数据库以获取与表相关的所有信息。它在功能上有效,但我怀疑它没有那么高效。
无论表中显示的信息是否在数据库中发生更改,当前设置都会在 每个 加载时调用此函数。这意味着通常会使用完全相同的数据重新加载表。这是浪费时间,因为它涉及查询数据库,附加数组,然后重新加载数据以基本上显示完全相同的信息,如果没有做任何事情将显示。在某种程度上,如果 信息发生了变化,这种方法的优点是因为重新加载会考虑到这一点。但是,即使这种方法我相信也可以改进。如果有办法识别哪些特定信息已更改,我想重新加载该特定单元格的数据。这可能吗?此外,有没有办法检查 任何 信息是否已更改,然后根据该结果继续?

1 个答案:

答案 0 :(得分:0)

从数据库中查询信息并填充tableArray将是您要做的最昂贵的部分。与其他两个东西相比,reloadData()调用实际上是免费的。