Я в замешательстве. У меня есть динамический tableView
для отображения моих данных и метода loadData()
, где я в основном загружаю данные из JSON в tableViewModel
. Теперь я хотел устранить дублирование данных каждый раз, когда обновление таблицы или освежает, для которых я реализовал:UITableView confusion
override func viewDidDisappear(animated: Bool) {
super.viewDidDisappear(animated)
// To avoid duplication of data when the table updates or refreshes.
self.tableViewModel.removeAll(keepCapacity: false)
}
Проблема была решена. Теперь, когда я переключаюсь между своими представлениями и возвращаюсь к tableView
, он дает мне ошибку index out of range
. Я попытался перезагрузить мой tableView
после self.tableViewModel.removeAll
, но это просто перезагружает пустой tableView
для меня, поскольку tableViewModel
пуст. Если я позвоню loadData()
после self.tableViewModel.removeAll
, он снова начнет дублировать мои данные.
Как я могу это решить? И как мне следует использовать viewDidDisappear
, viewDidAppear
, viewWillDisappear
, viewWillAppear
без дублирования моих данных, а также для спасения от ошибки index out range
?
Каков тип 'tableViewModel'? Если это тип, который вы создали, можете ли вы показать, как он определяется? Также покажите методы источника данных, потому что там может быть вызван объект вне диапазона. – Sweeper
Не могли бы вы разместить полное сообщение об ошибке и все функции, связанные с делегатом 'UITableViewDataSource'? Как вы загружаете данные? Я не совсем уверен, что вы упомянули о tableViewModel. Проблема, вероятно, связана с 'func tableView (UITableView, numberOfRowsInSection: Int)' или в 'tableViewModel'. Вы должны подготовить данные в 'viewWillAppear', если данные динамические. И подготовьте данные в 'viewDidLoad', если данные будут исправлены. –
@Sweeper tableViewModel - это структура, которую я определил как 'init (json: NSDictionary)'. Там много, что мне нужно будет опубликовать здесь, если вы хотите, чтобы я опубликовал все методы источников данных. Но, насколько я знаю, ошибка, скорее всего, в номереOfRowsInSection. Я реализовал это как: return tableViewModel.count. Хотя, я исправил проблему, если у вас все еще есть лучшие практики, это было бы здорово. – waseefakhtar