我正在頻繁更新tableview數據源,並需要正確同步tableview更新和數據源更新。你能在Swift 3中提出正確的方法嗎?如何同步數據源更新與tableview重新加載與線程安全?
ListViewModel
/// Main list viewmodel refreshing and filtering API
private func refreshCards(withIcon icon: CardIcon) {
queue.async {
Log.debug("refresh cards Started")
switch icon {
case .all:
self.loadOpenCards()
self.loadCompletedCards()
default:
self.filterOpenCards(byIcon: icon)
self.filterCompletedCards(byIcon: icon)
}
// Ask list TVC to reload table
self.listTVC?.refreshForUpdates()
Log.debug("refresh cards Finished")
}
}
ListTableViewController
func refreshForUpdates() {
DispatchQueue.main.async {
self.updateApprovalListBackgroundGraphics()
self.tableView.reloadData()
Log.debug("refresh cards Reloaded")
}
}
在此代碼tableView.reloadData(),因爲它被分派異步主線程不等待視圖模型刷新。
你什麼時候調用refreshForUpdates()? –
爲什麼你的模型知道視圖控制器?這是倒退。 – rmaddy
@Tushar Shama:在視圖模型後行//要求列表TVC重新加載表 –