Я построил табличное представление с FRC для отображения данных из основных данных.Я также реализовал контроллер didChange делегат для просмотра изменений в основных данных:
func controller(_ controller: NSFetchedResultsController<NSFetchRequestResult>, didChange anObject: Any, at indexPath: IndexPath?, for type: NSFetchedResultsChangeType, newIndexPath: IndexPath?) {
switch (type) {
case .insert:
if indexPath != nil && (indexPath?.row)! < (controller.fetchedObjects?.count)!{
tableView.insertRows(at: [indexPath!], with: .left)
}
break;
case .update:
if indexPath != nil && (indexPath?.row)! < (controller.fetchedObjects?.count)!{
self.tableView.reloadRows(at: [indexPath!], with: .left)
}
break;
case .delete:
if indexPath != nil && (indexPath?.row)! < (controller.fetchedObjects?.count)!{
self.tableView.deleteRows(at: [indexPath!], with: .left)
}
break;
case .move:
if indexPath != nil && (indexPath?.row)! < (controller.fetchedObjects?.count)!{
print("type.move: shouldn't get in here!")
}
break;
}
}
при запуске я получил это на консоли:
*** Ошибка подтверждения в - [UITableView _endCellAnimationsWithContext:] CoreData: ошибка: серьезная ошибка приложения.Исключение было получено от делегата NSFetchedResultsController во время вызова -controllerDidChangeContent :.Неверное обновление: недопустимое количество строк в разделе 0. Количество строк, содержащихся в существующем разделе после обновления (216), должно быть равно количеству строк, содержащихся в этом разделе до обновления (215), плюс или минус числоиз строк, вставленных или удаленных из этого раздела (0 вставлено, 0 удалено) и плюс или минус количество строк, перемещенных в или из этого раздела (0 перемещено, 0 перемещено).с userInfo (null)
, хотя приложение не аварийно завершает работу - но табличное представление закручено и не показывает дату.