Я получаю частые обновления источника данных tableview и вам необходимо синхронизировать обновления табличного представления с обновлениями данных. Можете ли вы предложить правильный подход к этому в Swift 3?Как синхронизировать обновления данных с помощью перезапуска таблиц с безопасностью потоков?
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() не ждать обновления ViewModel, потому что он отправляется асинхронной в основном потоке.
когда вы вызываете refreshForUpdates() ?? –
Почему ваша модель знает о контроллере? Это наоборот. – rmaddy
@Tushar Shama: В модели вида после строки // Запросить список TVC для перезагрузки таблицы –