reloadSection приводит к ошибке «попытка удалить раздел 1, но перед обновлением есть только 1 раздел с userInfo»

Я получаю сообщение об ошибке «попытка удалить раздел 1, но перед обновлением есть только 1 раздел с userInfo», который, по-видимому, вызван вызовом reloadSections:withRowAnimation: Как это может произойти, поскольку перезагрузка не является удалением, или это частично?

Это происходит при UIFetchedResultsController изменений в UITableViewController чей источник данных частично поддерживается UIFetchedResultsController (1-й раздел таблицы содержит константную строку, остальные ее разделы соответствуют разделам UIFetchedResultController : в этом случае есть два таких раздела с одной строкой каждый. UITableViewController также действует как UIFetchedResultsController .

Во время откат (для отмены удаления последних двух разделов) делегат получает следующие вызовы:

  1. controllerWillChangeContent: :; numberOfSectionsInTableView – 1; beginUpdates делегата beginUpdates
  2. controller:didChangeSection:atIndex:forChangeType: объявляет NSFetchedResultsChangeInsert для раздела 1; numberOfSectionsInTableView is 3; delegate calls is 3; delegate calls insertSections: withRowAnimation: for section 2, reloadSections: withRowAnimation: `для раздела 1
  3. controller:didChangeSection:atIndex:forChangeType: объявляет NSFetchedResultsChangeInsert для раздела 0; делегат вызывает insertSections:withRowAnimation: для раздела 1, reloadSections:withRowAnimation: для раздела 0
  4. controller:didChangeObject:atIndexPath:forChangeType:newIndexPath: объявляет NSFetchedResultsChangeInsert для indexPath (1,0); делегат вызывает insertRowsAtIndexPaths:withRowAnimation: для indexPath (2,0)
  5. controller:didChangeObject:atIndexPath:forChangeType:newIndexPath: объявляет NSFetchedResultsChangeInsert для indexPath (0,0); делегат вызывает insertRowsAtIndexPaths:withRowAnimation: для indexPath (1,0)
  6. controllerDidChangeContent: :; делегат вызывает endUpates , что приводит к этой ошибке:

попытайтесь удалить раздел 1, но перед обновлением есть только 1 раздел с userInfo

Если делегат не вызывает reloadSections:withRowAnimation как указано, ошибка не возникает.

Что вызывает ошибку в этой конкретной ситуации и как я могу ее предотвратить? (BTW, перезагрузки необходимы в этом случае для обновления заголовков для верхних и нижних колонтитулов в смежных разделах).

ОБНОВЛЕНИЕ Кажется, что проблема может быть связана с тем, что numberOfSectionsInTableView перескакивает с 1 на 3 (в результате rollback ) за один шаг после controllerWillChangeContent: тогда как количество фактических разделов (и строк) растет инкрементально внутри «скобки», между controllerWillChangeContent: и controllerDidChangeContent: Но не означает ли это брекетинг для временных разниц между количеством элементов в источнике данных и таблицей? Мой numberOfSectionInTableView: определяется следующим образом:

 - (NSInteger)numberOfSectionsInTableView: (UITableView *)tableView { return 1 + self.fetchedResultsController.sections.count; } 

  • UITableView -> Как загрузить дополнительную запись при прокрутке вниз?
  • iOS8 UITableView scolling возвращается при прокрутке вверх
  • Лучшие практики: быстрый прокрутка UITableView?
  • Динамическая высота строки UITableView с использованием UIStackView?
  • Как выбрать UITableViewCell по умолчанию?
  • iOS для использования нескольких UITableView в одном UIViewController
  • Развернуть размер метки / ячейки на основе размера текста в UITableView Swift
  • Проблемы с UITableView
  • iOS реализует наилучшую практику просмотра длинных прокруток
  • увеличить высоту uitableviewcell, одновременно увеличивая внутренний UITextView
  • Можно ли использовать представление контейнера в прототипе UITableViewCell
  • Как (или как будет) Apple делать эту анимацию?
  • Interesting Posts

    Неправильное размещение текстового поля поиска внутри строки поиска на iOS 11

    инструменты с iOS: почему монитор памяти не согласен с Allocations?

    Общий экземпляр NSHTTPCookieStorage не сохраняется.

    Отображение MKAnnotationView, которые находятся в пределах видимого вида карты

    Можете ли вы анимировать setRootViewController?

    Взаимодействие с телефоном на iPhone

    Размер содержимого ячейки UItableView для iPad

    Есть ли какие-либо другие звуковые системы iOS, кроме «tock»?

    Xcode 6 создает новый объект класса C

    Параметры обработчика протокола браузера для ios

    Как использовать UIViewPropertyAnimator с автоматической компоновкой?

    Скрыть панель инструментов над пользовательским расширением клавиатуры в iOS 9

    Метод load () определяет метод класса Objective-C «load», который не разрешен Swift 1.2

    Не удается добавить сборку для тестирования внутреннего тестера

    Как настроить SFSafariViewController в качестве Контроллера подробностей для UISplitViewController?

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.