UISearchBar:Predictive Search ReloadData崩溃

时间:2016-08-11 20:25:00

标签: ios swift uitableview uisearchbar grand-central-dispatch

在我的应用中,我有一个searchbar来搜索3种不同类型的项目。这三个项目有不同的数据源,因此每次文本更改我都会发送3个不同的网络请求。我在UITableView的3个不同部分中显示了这3种类型的项目。收到任何请求的响应后,我更新数据源并致电tableView.reloadData。获取一个项目(用户)的示例函数如下所示: -

func searchUsers(withName name: String) {
        showNetworkActivity()
        UserService.search(query: name) { (data, error) in
            Queue.Main.execute({
                self.hideNetworkActivity()
                if error == nil {
                    self.searchedUsers = data as! [User]
                } else {
                    self.searchedUsers = []
                }
                self.searchTableView.reloadData()
            })
        }
}

但由于索引超出约束异常,我的应用程序随机崩溃。当新数据到达但是tableview忙于根据先前接收的数据重新加载时发生崩溃。我试图只重新加载相关的部分,而不是重新加载整个表,但它会导致更多的崩溃。我怎样才能避免这种崩溃?

PS:Queue.Main确保所有事情都在主线程上完成。

0 个答案:

没有答案