причина: «попытка удалить строку 12 из раздела 0, который содержит только 10 строк перед обновлением» - PullRequest
0 голосов
/ 30 октября 2019

Я пытаюсь сделать бесконечный просмотр таблицы прокрутки, но проблема в том, что когда я пытаюсь перезагрузить строки, я получаю "attempt to delete row 12 from section 0 which only contains 10 rows before the update".

Я загружаю первые 10 результатов, а послеони отображаются, я загружаю остальное. Но перед сбоем я po 'd listObj.count просто для того, чтобы убедиться, что он правильно добавляет результаты, и да, это работает.

private func loadDataBackground() {
        if self.totalPages! > self.currentPage {
            var response: [AnyHashable]?
            self.currentPage += 1
            self.api = Api() 

            if self.type == "sometype" {
                self.api.someMethodPaginated(page: self.currentPage, resultsbyPage: self.resultsByPage!)
                response = Api.responseToArray(self.api) as? [AnyHashable]
            }

            if response != nil {
                for object in response! {
                    self.listObj.append(object)
                }
                let indexToReload = calculateIndexPathsToReload(newListaObj: response!)

                DispatchQueue.main.async {
                    self.myTableView.beginUpdates()
                    self.myTableView.reloadRows(at: indexToReload, with: .automatic)
                    self.myTableView.endUpdates()
                }
            }
        }
    }
private func calculateIndexPathsToReload(newListObj : Array<Any>) -> [IndexPath] { //comments
      let startIndex = listObj.count - newListObj.count
      let endIndex = startIndex + newListObj.count
      return (startIndex..<endIndex).map { IndexPath(row: $0, section: 0) }
    }

Я использовал второй метод, описанный здесь , чтобы определить последнюю строку.

Что я делаю не так?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...