Ich habe ein seltsames Verhalten von NSFetchedResultsController. Ich möchte es mit meinem Array (nicht TableView) verwenden. Ich meine, mein Array sollte eine Liste von Objekten von NSFetcherResultsController enthalten.NSFetchedResultsController und Array. Einfügung
Ich schaffe meine Liste:
_ = try? controller.performFetch()
var myList = controller.fetchedObjects?.map { MyModel($0) }
Und es funktioniert. Aber ich habe Probleme, wenn ich myList aktualisieren sollte, wenn NSFetchedResultsController
aktualisiert wird. Also, ich habe diese Methode:
func controller(controller: NSFetchedResultsController, didChangeObject anObject: AnyObject, atIndexPath indexPath: NSIndexPath?, forChangeType type: NSFetchedResultsChangeType, newIndexPath: NSIndexPath?) {
switch type {
case .Insert:
myList.insert(anObject, atIndex: newIndexPath!.row)
case .Delete: ...
Und ich bekomme einen Absturz in dieser Zeile. Wenn zum Beispiel myList 40 Elemente enthält und 20 Elemente eingefügt werden sollen, dann kann newIndexPath
gleich 53 sein, aber nicht 41. Ich meine, die Reihenfolge des Einfügens ist inkorrekt (vielleicht ist es ein Fehler von NSFetchedResultsController
). Ich meine, anstatt Objekte der Ordnung 41,42,43,44,45,46 und so weiter einzufügen, fügt NSFetchedResultsController
Objekte ein, etwa so: 53,56,42,58,43,46,44 und so weiter. Mit tableView funktioniert es, denn wenn didChangeObject
Methode aufgerufen, dann enthält NSFetchedResultsController
neue Daten bereits (60 Elemente). Aber wie kann ich Spiegel von NSFetchedResultsController
Elementen bekommen?
Derzeit sehe ich nur eine Lösung. Ich sollte Updates speichern, und wenn die "controllerDidChangeContent" -Methode aufgerufen wird, sollte ich Updates nach indexPath sortieren und myList aktualisieren. Aber kann die bessere Lösung existieren?
:) Pragmatische Programmierer zur Verfügung diskutieren, was den Vorteil ist 'NSFetchedResultsController' zu verwenden ** ** ohne einen Tisch Aussicht? Der Hauptzweck besteht darin, die Benutzeroberfläche (Tabellenansicht) als Reaktion auf Änderungen des 'NSManagedMangedContext' zu steuern. – vadian
Haben Sie eine Anforderung, den vorhandenen Inhalt von' myList' beizubehalten, oder können Sie einfach die gesamte Liste neu erstellen? – Wain
Ich benutze meine benutzerdefinierte Ansicht mit Sammlungsstruktur. In Bezug auf Freizeit-Liste - ich kann es tun, aber wenn ich viele Elemente habe, dann kann es lange dauern –