Анимация удаления строки в UITableView с помощью CoreData приводит к ошибке утверждения

У меня есть UITableView, который показывает список объектов, хранящихся в CoreData. Я могу удалить объект, используя следующий код:

- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
    NSLog(@"Delete row");
    [managedObjectContext deleteObject:[fetchedResultsController objectAtIndexPath:indexPath]];

    // Save the context.
    NSError *error;
    if (![managedObjectContext save:&error]) {
        /*do this gracefully one day */
        NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
        abort();
    }
    [self refreshTables]; //where refreshTables just reloads the data the table is using and calls [self.tableView reloadData];
}

}

Но у него нет анимации или эстетики.

Когда я пытаюсь анимировать, заменяя

[self refreshTables]; 

на

[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];

, я получаю следующую ошибку:

Ошибка утверждения в - [UITableView _endCellAnimationsWithContext:] ,> /SourceCache/UIKit_Sim/UIKit-1261.5/UITableView.m:920 2010-10-30 16: 46: 35.717 MyApp [38226: 207] * Завершение работы приложения из-за неперехваченного исключения 'NSInternalInconsistencyException', причина: 'Недействительное обновление: недопустимое количество строк в разделе 0. Количество строк, содержащихся в существующем разделе после обновления (3), должно быть равно количеству строк, содержащихся в этом разделе до обновления (3 ), плюс или минус количество строк, вставленных или удаленных из этого раздела (0 вставлено, 1 удалено). '

Я пробовал использовать deleteRowsA Код tIndexPaths в различных местах кода commitEditingStyle безуспешен (например, перед удалением объекта из mOC), но я не могу обойти эту ошибку.

Я знаю, что пример Apple iPhoneCoreDataRecipes решает проблему, настраивая делегата для FetchedResultsController для обработки редактирования / удаления строк, но на данном этапе разработки, если возможно, мне просто нужно простое решение для анимации этих удаленных объектов.

Как я могу анимировать удаление строки до / после удаления объекта из моего managedObjectContext?

РЕДАКТИРОВАТЬ: Я пробовал использовать deleteRowsAtIndexPaths до и после удаления элемента из mOC с той же ошибкой.

8
задан glenstorey 30 October 2010 в 06:42
поделиться