Ich habe Probleme mit dem Löschen einer Zeile aus meinem TableView in Swift, iOS 8, Xcode 6 Beta 6. Jedes Mal, wenn ich versuche, eine Zeile zu löschen, erhalte ich einen Fehler in den Zeilen von
Assertionsfehler in - [UITableView _endCellAnimationsWithContext:], /SourceCache/UIKit_Sim/UIKit-3302.3.1/UITableView.m:1581 2014-08-30 20: 31: 00.971 Klassenverzeichnis [13290: 3241692] *** App beenden wegen Uncaught-Ausnahme 'NSInternalInconsistencyException', Grund: 'Ungültiges Update: ungültige Anzahl von Zeilen in Abschnitt 1. Die Anzahl von Zeilen, die in einem vorhandenen Abschnitt nach dem Update (25) enthalten sein müssen gleich der Anzahl der Zeilen in diesem Abschnitt vor der update (25), plus oder minus der Anzahl der eingefügten oder gelöschten Zeilen dieser Abschnitt (0 eingefügt, 1 gelöscht) und plus oder minus der Anzahl von Zeilen, die in diesen Abschnitt hinein oder aus ihm heraus verschoben wurden (0 eingezogen, 0 ausgezogen).
Ich habe hier alle Antworten auf dieses häufige Problem gelesen und habe das Gefühl, dass ich die empfohlenen Bedingungen erfüllt habe. Der Artikel scheint aus dem Datenmodell entfernt zu werden - - Wenn ich die App neu lade, ist das gelöschte Objekt aus der Tabelle verschwunden - aber es scheint einige Reste in der entsprechenden SQLite-Datei zu geben und die Mathematik addiert sich natürlich nicht. Der println, der den indexPath ausspuckt, zeigt den richtigen Abschnitt und die richtige Zeile an. Ich bin sehr verwirrt. Das sollte einfach sein, aber mir fehlt etwas Dummes, da bin ich mir sicher, ich vermute im Datenmodell die Löschung. Volles Projekt auf Github .
%Vor% Es ist einfach, Ihren Absturz mit einem Xcode Core Data Master-Detail-Vorlagenprojekt zu reproduzieren. Wenn Sie NSFetchedResultsController
verwenden, sollten Sie in der Regel NSFetchedResultsControllerDelegate
verwenden (Sie haben es deklariert, aber nicht verwendet).
Löschen Sie diese Zeilen in Ihrer tableView:commitEditingStyle:forRowAtIndexPath:
-Methode:
Fügen Sie diese Zeilen Ihrer viewController-Klasse hinzu:
%Vor%Dies sollte Ihr Problem beheben.
Ich glaube, das ist einfach ein Caching-Problem. Ihr fetchedResultController
lädt Ihre Ergebnisse nicht automatisch neu, wenn die Ergebnisse zwischengespeichert werden. Das bedeutet, dass, wenn tableView:numberOfRowsInSection:
erneut aufgerufen wird, die Ergebniszählung immer noch 25 zurückgibt, obwohl Sie ein Element gelöscht haben.
Tags und Links uitableview ios xcode swift ios8