Ich benutze Matt Gallagher GenericTableViewController
Idee zur Steuerung meiner UITableViews
. Meine Datenquelle ist NSFetchedResultsController
.Wie kann ich deleteRowsAtIndexPaths machen: Arbeit mit GenericTableViewController?
http://cocoawithlove.com/2008/12/heterogeneous-cells-in.html
Alles funktioniert gut, bis ich versuche, eine Zelle zu löschen.
Ich habe den folgenden Code in meinem View Controller:
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
// Delete the managed object.
NSManagedObjectContext *context = [wineryController managedObjectContext];
[context deleteObject:[wineryController objectAtIndexPath:indexPath]];
NSError *error;
if (![context save:&error]) {
// Handle the error.
}
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
}
}
Die letzte Zeile stürzt mit der ziemlich ausführlichen Erklärung in der Konsole:
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid update: invalid number of rows in section 0. The number of rows contained in an existing section after the update (5) must be equal to the number of rows contained in that section before the update (5), plus or minus the number of rows inserted or deleted from that section (0 inserted, 1 deleted).'
OK, ich verstehe, was es sagt. ..eine Zeile wird nicht gelöscht (würde ich annehmen), weil ich keine Nachricht an den richtigen Ort weiterleite (da ich etwas Code von seinem 'normalen' Ort verschoben habe) ... hat jemand eine Idee welche? Ich bin total ratlos.
+1 Vielen Dank für die Antwort. –
Sie dürfen die Datenquelle vor dem Animationsblock ändern. Der angezeigte Fehler weist darauf hin, dass Sie die Datenquelle vor dem Löschen nicht geändert haben. Stellen Sie sicher, dass sich die Datenquelle im endgültigen Status (nach den Löschvorgängen) befindet, bevor Sie das Entfernen dieser Zeilen animieren. – Mark
Ich vergesse das immer ... warum enthält der XCode Vorlagencode diese Zeilen nicht? – Echelon