Löschen von Zeilen-von TableView und coreData
Ich habe einige Probleme mit löschen von Zeilen aus einem tableView, die gefüllt ist mit coreData-Objekte.
Versuchen, dies zu tun:
-(void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath*)indexPath{
if (editingStyle == UITableViewCellEditingStyleDelete) {
[self.tableView beginUpdates];
NSManagedObject *managedObject = [self.fetchedResultsController objectAtIndexPath:indexPath];
NSLog(@"Deleting (%@)", [managedObject valueForKey:@"original_title"]);
[self.managedObjectContext deleteObject:managedObject];
[self.managedObjectContext save:nil];
[self performFetch];
[self.tableView endUpdates];
}
}
So, wenn ich auf die "Löschen" - Taste, stürzt die app mit folgender Log:
*** Assertion failure in -[UITableView _endCellAnimationsWithContext:], /SourceCache/UIKit_Sim/UIKit-2872.3/UITableView.m:1254
2013-08-13 18:39:17.624 RR_proto[1076:a0b] *** Terminating app due to uncaught exception
'NSInternalInconsistencyException', reason: 'Invalid update: invalid number of sections.
The number of sections contained in the table view after the update (1) must be equal
to the number of sections contained in the table view before the update (2), plus or minus
the number of sections inserted or deleted (0 inserted, 0 deleted).'
*** First throw call stack:
Ich habe auch versucht, fügen Sie die folgende Zeile nach [self.managedObjectContext save:nil]:
[self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES];
Aber die app stürzt wie zuvor.
Eins noch, jedes mal wenn ich starten Sie die app erneut, nach einem Absturz durch löschen-Aktion, die Zelle, die gelöscht werden sollen, ist wirklich Weg!
Wäre sehr nett, wenn jemand helfen kann.
Ich weiß es sind viele Fragen zu ähnlichen Problemen und ich habe versucht, verschiedene Dinge aus, ohne Erfolg.
Danke!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Tabelle wird automatisch aktualisiert, indem die gefundenen Ergebnisse-controller delegieren
Methoden, wenn Objekte Hinzugefügt, gelöscht oder geändert werden.
Daher, um ein Objekt zu entfernen, löschen Sie es einfach von der managed-object-context.
Rufen Sie nicht
beginUpdates
,endUpdates
,deleteRowsAtIndexPaths
oderperformFetch
:self.fetchedResultsController.delegate = self
? - Wenn Sie ein neues iOS-Projekt in Xcode mit der "Master-Detail Application" - Vorlage und wählen Sie "Use Core Data", dann erhalten Sie eine Beispiel-app mit Tabellen-Ansicht und die gefundenen Ergebnisse-controller!