У меня есть 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 с той же ошибкой.