1

Я использую ECSlidingViewController для пути & Интерфейс стиля FB. Два UITableViews, один (деталь) отображается как основной вид, второй (мастер) отображается как sidemenu. Оба работают от Core Data.Сбой основных данных при удалении родительского tablerow

Я получаю жесткий сбой при удалении родительской строки таблицы в sidemenu UITableView, но только тогда, когда на подробной странице отображаются дочерние элементы родительской строки при удалении. Все остальные строки удаляются, как ожидалось.

Удаление строки обрабатывается:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { 
    if (editingStyle == UITableViewCellEditingStyleDelete) { 
     [self.managedObjectContext deleteObject:[self.fetchedResultsController objectAtIndexPath:indexPath]]; 
    } 
} 

Я получаю следующее сообщение об ошибке в журнале:

CoreData: error: Serious application error. Exception was caught during Core Data change processing. This is usually a bug within an observer of NSManagedObjectContextObjectsDidChangeNotification. Invalid update: invalid number of rows in section 0. The number of rows contained in an existing section after the update (0) must be equal to the number of rows contained in that section before the update (3), plus or minus the number of rows inserted or deleted from that section (0 inserted, 1 deleted) and plus or minus the number of rows moved into or out of that section (0 moved in, 0 moved out). with userInfo (null)

delete rule установлен в Отменяет, если это помогает?

Я предполагаю, что Core Data удаляет ВСЕ детей за один проход от NSFetchedResultsController, а затем UITableVIew все путает?

Как удалить родительский и дочерний NSManagedObjects без сбоя?

+0

После удаления объекта выполните новую выборку и перезагрузку данных. Для этого вы также можете использовать NSFetchResultsControllerDelegate. Надеюсь, поможет. –

+0

Я не могу удалить объект без сбоя. Отдельный элемент удаляет работу нормально. Я не понимаю, почему он пытается удалить все дочерние элементы одновременно. – JMWhittaker

ответ

0

После прохождения кода много раз оказывается, что у меня были вложенные [self.tableView beginUpdates] и [self.tableView endUpdates], которые выходили из синхронизации, и я вызывал endUpdates дважды подряд.

Я ударил это много раз, разрабатывая это приложение. Если у вас есть сбой, подобный этой проверке, и вы, возможно, используете CoreDataTableViewController из курса CS193P, проверьте использование просительных и конечных обновлений!

Смежные вопросы