У меня есть 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 удалено ).
Я пытался получить код deleteRowsAtIndexPaths в различных местах кода commitEditingStyle без удачи (например, перед удалением объекта из mOC), но, похоже, не могу обойти это ошибка.
Я знаю, что пример AppleCoreDataRecipes решает проблему, настраивая делегат для FetchedResultsController для обработки редактирования / удаления строк, но на данном этапе разработки, если это возможно, я просто хочу простое решение для анимации этих удаленных объектов.
Как я могу анимировать удаление строки до / после удаления объекта из моего управляемого объекта?
РЕДАКТИРОВАТЬ: я пытался иметь deleteRowsAtIndexPaths до и после удаления элемента из MOC, с той же ошибкой.