У меня есть tableView, который использует NSFetchedResultsController для заполнения ячеек таблицы на viewDidLoad. Пользователь имеет возможность сортировать tableView с использованием UISegmentControl (индекс 0 = «число», индекс 1 = «имя»).
Когда пользователь щелкает UISegmentControl, он вызывает функцию sortShortListUsingSelectedSortIndex
, после чего эта функция переупорядочивает tableView с использованием setSortDescriptors
и NSFetchedResultsController
. Когда таблица была переупорядочена, и пользователь выбирает строку, didSelectRowAtIndexPath:
отображает NSIndexPath
, который я ожидаю увидеть (например, IndexPath [0,6] был переупорядочен в Index [0,3]), однако при попытке чтобы удалить эту же строку, NSIndexPath
в didChangeObject:atIndexPath:forChangeType:newIndexPath
отображает старый IndexPath [0,6], а не [0,3] и приведет к сбою:
CoreData: ошибка: серьезная ошибка приложения. Исключение было получено от делегата NSFetchedResultsController во время вызова -controllerDidChangeContent :. Неверное обновление: недопустимое количество строк в разделе 0. Число строк, содержащихся в существующем разделе после обновления (9), должно быть равно количеству строк, содержащихся в этом разделе до обновления (9), плюс или минус число из строк, вставленных или удаленных из этого раздела (0 вставлено, 1 удалено) и плюс или минус количество строк, перемещенных в или из этого раздела (0 перемещено, 0 перемещено). with userInfo (null)
Вот упрощенные версии моих методов: Суть
Почему я вижу разные индексы для одной и той же строки в моем tableView?