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 исчезает при прокрутке
  • Воспроизведение содержимого таблиц при использовании UIRefreshControl и настройке содержимогоInset
  • Видео YouTube в приложении UITableView iPhone
  • получить indexPath из UITableViewCell при нажатии кнопки из ячейки
  • Несколько таймеров в UITableViewCell (Swift)
  • Высота uitableview не изменяется динамически в быстрых ios?
  • Как изменить размер UITableView в соответствии с его содержимым?
  • UISearchBar в верхней части UITableView, который может скрываться, но оставаться рядом с UINavigationBar
  • Как сделать нижний колонтитул UITableView для раздела не липким
  • UITableView с UISearchController переходит под панель навигации при входе в результирующее представление и возвращается
  • Динамическая высота ячейки UITableView ломается при переходе или повороте
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.