Я чувствую твою боль. К сожалению, я не думаю, что идея перезагрузки сильно помогает. Если есть расхождение между моделью и табличным представлением, по моему опыту, проблема проявляется как исключение до или во время обновления анимации. Если есть проблема, я обнаружил, что вы не попали на перезагрузку, и я не думаю, что вы хотите.
Вот некоторые факторы риска, которые, по моему опыту, приводят к тому, что модели, склонные не синхронизироваться с представлением таблицы:
- количество моделей и элементов модели, полученных из более сложных расчетов
чем простой подсчет массивов и массив itemAtIndex:
- фильтры, такие как вкладки, которые показывают другой аспект модели в той же таблице в зависимости от того, какая вкладка выбрана
- контроллер результатов поиска и его таблица
- обновления на основе событий, которые запускаются асинхронно
- гетерогенных типов в модели, с различными типами клеток и размеров
- одно неуклюжее слово: FetchedResultsController
- и особенно комбинации вышеперечисленных
Это выходит за рамки табличных представлений, и я не претендую на то, чтобы быть идеальным практиком всех проповедей здесь, но я думаю, что способ обрести уверенность в вашем приложении заключается в следующем:
Создайте пользовательский интерфейс без искусства и как можно меньше логики приложения; просто
макет модели - в максимально возможной степени - равный в
сложность, но не в объеме, к реальной вещи.
Построить модель и логику приложения вместе с тестами, которые - в той степени,
возможно - используйте его независимо от пользовательского интерфейса.
Пока вы тестируете, принимайте исключения в качестве друга, сообщая вам, что вам нужно исправить. Вставьте как можно меньше защитного кода как можно дольше .
Мои $ 0,02. Желаем удачи.