У меня есть вид таблицы, показывающий результаты поиска. Он имеет массив всех объектов для поиска и массив фильтрованных объектов, которые подают представление таблицы.Обновление таблицы с результатами поиска, вызывающими сбои
Когда пользователь меняет текст в строке поиска, я обновляю фильтрованный массив и перезагружаю представление таблицы. Кроме того, каждая ячейка имеет эскиз, который либо кэшируется, либо загружается асинхронно перед обновлением ячейки представления таблицы.
Таким образом, два места, где перегружаются данные вид таблицы находятся в методе фильтрации, который вызывает tableView.reloadData()
, и в cellForRowAtIndexPath
, который вызывает self.tableView.reloadRowsAtIndexPaths([indexPath], withRowAnimationStyle: .None)
на главном потоке, если изображение нужно загрузить.
So. У меня были всевозможные проблемы. Три вида ошибок, которые я получил:
- Неустранимая ошибка: индекс за пределами допустимого диапазона. Кажется, что это происходит, когда
cellForRowAtIndexPath
пытается получить содержимое из массива после того, как он был опустошен, потому что пользователь изменил текст поиска. - Ошибки с табличным представлением: например, ошибка, пытающаяся вставить строку 34 в раздел 0. Я не уверен, что вызывает это, но я думаю, что он пытается вставить строки, когда в представлении таблицы нет разделов из-за массив пуст.
- Исключение внутренней несоответствия: я не получаю дополнительной информации, когда это происходит, она просто падает. Поэтому я не знаю, в чем проблема.
Так как я могу избежать этих проблем? Я уже пару дней пытаюсь избавиться от этих ошибок, но ничего не пытаюсь работать. У кого-нибудь есть идеи? Благодарю.
Просьба предоставить некоторый код делегатов tableView для лучшего поиска проблемы. –