UITableView
Aktualisierungen zwischen beginUpdates
und endUpdates
Anrufe werden zusammengefasst und alle gleichzeitig ausgeführt. Apples Dokumentation ist spezifisch über die Reihenfolge, in der insert
und delete
Operationen durchgeführt werden:UITableView Löschen, Einfügen und Verschieben von Bestellungen in Stapelaktualisierungen
Löschen und Neuladen Operationen innerhalb eines Animationsblockes angeben, welche Zeilen und Abschnitte in der ursprünglichen Tabelle entfernt werden sollen oder neu geladen; Einfügungen legen fest, welche Zeilen und Abschnitte der resultierenden Tabelle hinzugefügt werden sollen. Die Indexpfade, die zum Identifizieren von Abschnitten und Zeilen verwendet werden, folgen diesem Modell. Das Einfügen oder Entfernen eines Elements in einem veränderbaren Array kann andererseits den Array-Index beeinflussen, der für den sukzessiven Einfügungs- oder Entfernungsvorgang verwendet wird; Wenn Sie beispielsweise ein Element in einen bestimmten Index einfügen, werden die Indizes aller nachfolgenden Elemente im Array inkrementiert.
Es ist auch erwähnenswert, dass:
Anrufe an beginUpdates und EndUpdates verschachtelt werden können; Alle Indizes werden wie behandelt, als ob es nur den äußeren Update-Block gäbe.
[Emphasis Mine]
Also: Man denke etwa Deletionen in einem ersten Durchlauf auftritt, und dann passiert irgendwelchen Einfügungen im Anschluss an diese, die neuen Index Pfade verwenden, die nach die Deletionen .
Das ist nützlich. Jedoch, Ich habe keine Dokumentation darüber gefunden, wo Zeilen- (und Abschnitts-) Bewegungen auftreten, welche Indexierung sie verwenden sollten und ob dies Auswirkungen auf die anderen Schritte hat. Weiß jemand?
Ich versuche, TableView.move mit Batch-Löschungen und Einfügungen zu ersetzen, weil ich die Reihenfolge der Löschungen und Einfügungen kenne. Aber ohne Glück scheint Bewegung etwas anderes zu sein. Das hat mich dazu gebracht, mit Batch-Updates mit FetchedResultsController zu zögern, weil ich nicht weiß, was ich mit 'NSFetchedResultsChangeType.move' machen soll. Hast du Fortschritte? – jchnxu
Keine weiteren Informationen, tut mir leid - Sie können es wahrscheinlich ausprobieren? – Benjohn