出现这个情况的原因是:没有使用 DispatchQueue.main.async
TableView.reloadData()必须写在那个里面。
// Asynchronously reload the data and display on the tableview
DispatchQueue.main.async {
// Reload the tableview
self.searchResultTableView.reloadData()
}
顺便提一句我出现的错误现象:我的UIView上有一个Search button,从youtube API上根据用户在文本框中输入的关键字读取youtube返回的Json信息。点击Search button两次才会显示数据,更改关键词以后也是这样,第一次按下Search button,仍然是之前的搜索结果。但在console上,第一次点击Search后,就已经出现新的搜索结果。
DispatchQueue.main.async的意思是 异步。就是让reloadData()加载的数据异步更新到main thread上。不然tableView数据只会在后台准备好,下一次按button才会显示。