Что может привести к аварийному завершению работы tableView.reloadRows (at: [indexPath], with: .none) следующим образом? - PullRequest
0 голосов
/ 11 сентября 2018

Я пытаюсь понять ошибку в Fabric:

Неверное обновление: недопустимое количество строк в разделе 0. Количество строк, содержащихся в существующем разделе после обновления (40), должно быть равно количеству строк, содержащихся в этом разделе до обновления (20), плюс или минус количество строк, вставленных или удаленных из этого раздела (1 вставлено, 1 удалено) и плюс или минус количество строк, перемещенных в или из этого раздела (0 перемещено, 0 перемещено). специализированный NewInboxViewController.tableView (UITableView, didSelectRowAt: IndexPath)

Бывает на этой линии в didSelectRow:AtIndexPath:

tableView.reloadRows(at: [indexPath], with: .none)

Поведение табличного представления:

  • просмотр модели загружает 20 строк
  • когда пользователь прокручивает до 70% табличного представления, мы загружаем еще 20 строк, isDownloading bool переключается в значение true, устанавливается в значение false после завершения вызова, затем перезагружается представление таблицы
  • can commit edits - false, а isDownloading - true, в противном случае пользователь может провести пальцем, чтобы удалить строку
  • когда пользователь тянет для обновления, мы удаляем то, что хранится в массиве, из которого извлекаются ячейки, и заменяем 20 недавними элементами из вызова API (отредактировано)

1 Ответ

0 голосов
/ 11 сентября 2018

Вы говорите табличному представлению перезагрузить одну строку, но вы добавили 20 новых строк в модель данных.Вот что значит ошибка.Он говорит:

"до того, как вы вызвали reloadRows, в модели данных было 20 строк. Теперь я вижу, что в модели данных есть 40 строк, но вы только говорите мне перезагрузить (вставитьи удалите) 1 строка. "

Вместо этого следует вызывать tableView.insertRows(at:) с массивом из 20 новых путей индекса, по одному для каждой новой добавленной строки.

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