IOS TableViewController: попытка выполнить вставку и перемещение по одному и тому же пути индексаIOS

Программируем под IOS
Гость
IOS TableViewController: попытка выполнить вставку и перемещение по одному и тому же пути индекса

Сообщение Гость »

При получении события перемещения от моего NSFetchedResultsControllerDelegate я получаю следующее исключение:

controllerDidChangeContent:. попытайтесь выполнить вставку и перемещение по одному и тому же индексному пути

Код: Выделить всё

extension MyViewController : NSFetchedResultsControllerDelegate {
func controllerWillChangeContent(_ controller: NSFetchedResultsController) {
tableView.beginUpdates()
}

func controller(_ controller: NSFetchedResultsController, didChange anObject: Any, at indexPath: IndexPath?, for type: NSFetchedResultsChangeType, newIndexPath: IndexPath?) {
switch type {
case .insert:
guard let newIndexPath else { return }
tableView.insertRows(at: [newIndexPath], with: .fade)
case .delete:
guard let indexPath else { return }
tableView.deleteRows(at: [indexPath], with: .fade)
case .update:
guard let indexPath else { return }
tableView.reloadRows(at: [indexPath], with: .fade)
case .move:
guard let indexPath, let newIndexPath else { return }
tableView.moveRow(at: indexPath, to: newIndexPath)
@unknown default:
print("...")
}
}

func controllerDidChangeContent(_ controller: NSFetchedResultsController) {
tableView.endUpdates()
}
}
В предыдущих версиях iOS об этом было много сообщений, но ничего свежего. Это также шаблонный код, предоставленный Apple для обработки событий вставки/обновления/перемещения. Должен ли я действительно проверять, совпадают ли пути к индексу at/to? Или это указывает на проблему где-то еще?

Подробнее здесь: https://stackoverflow.com/questions/781 ... e-same-ind

Вернуться в «IOS»