Animieren Zeile Löschen in UITableView mit CoreData gibt Assertion-Fehler

Ich habe eine UITableView, die zeigt eine Liste von Objekten gespeichert, die mit CoreData. Kann ich ein Objekt löschen, verwenden Sie den folgenden code:

- (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];
}

}

Aber es hat keine animation oder ästhetik.

Wenn ich versuche zu animieren, durch den Austausch

[self refreshTables]; 

mit

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

Bekomme ich die folgende Fehlermeldung:

Assertionsfehler in -[UITableView _endCellAnimationsWithContext:], >/SourceCache/UIKit_Sim/UIKit-1261.5/UITableView.m:920
2010-10-30 16:46:35.717 MyApp[38226:207] * Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Ungültiges update: ungültige Anzahl von Zeilen im Abschnitt 0. Die Anzahl der Zeilen, die in einer bestehenden Abschnitt nach dem update (3) muss gleich sein der Anzahl der Zeilen in diesem Abschnitt, bevor Sie das update (3) plus oder minus die Anzahl der Zeilen, die eingefügt oder gelöscht, der Abschnitt (0 eingefügt, 1 gestrichen).'

Habe ich versucht, mit der deleteRowsAtIndexPaths - code in einer Vielzahl von Orten in der commitEditingStyle code nicht mit Glück (zum Beispiel vor dem entfernen des Objekts aus dem mOC), aber ich kann nicht scheinen, um diesen Fehler.

Ich weiß, Apple ist iPhoneCoreDataRecipes Beispiel behandelt das problem durch die Einrichtung einer Stellvertretung für die FetchedResultsController zu editieren /löschen von Zeilen, aber in diesem Stadium in der Entwicklung, wenn möglich, ich möchte nur eine einfache Lösung für das animieren, diese gelöschten Objekte.

Wie kann ich Sie animieren die Entfernung von einer Zeile, bevor/nachdem ich entfernen Sie das Objekt aus meinem managedObjectContext?

EDIT: ich habe versucht, mit deleteRowsAtIndexPaths vor und nach dem entfernen des Elements aus dem mOC, mit dem gleichen Fehler.

InformationsquelleAutor glenstorey | 2010-10-30
Schreibe einen Kommentar