Nightmare with performBatchUpdates stürzt ab

Ich stehe vor einem Albtraum eines Absturzes währendperformBatchUpdates auf einencollection view.

Das Problem ist im Grunde das Folgende: Ich habe viele Bilder in einem Verzeichnis auf einem Server. Ich möchte das @ zeig thumbnails dieser Dateien auf einemcollection view. Das Vorschaubild muss jedoch vom Server heruntergeladen werden asynchron. Sobald sie eintreffen, werden sie in die Sammlungsansicht eingefüg

dispatch_async(dispatch_get_main_queue(),
             ^{
               [self.collectionView performBatchUpdates:^{

                 if (removedIndexes && [removedIndexes count] > 0) {
                   [self.collectionView deleteItemsAtIndexPaths:removedIndexes];
                 }

                 if (changedIndexes && [changedIndexes count] > 0) {
                   [self.collectionView reloadItemsAtIndexPaths:changedIndexes];
                 }

                 if (insertedIndexes && [insertedIndexes count] > 0) {
                   [self.collectionView insertItemsAtIndexPaths:insertedIndexes];
                 }

               } completion:nil];
             });

das Problem ist das (glaube ich). Angenommen, zur Zeit = 0 enthält die Sammlungsansicht 10 Elemente. Ich füge dann 100 weitere Dateien zum Server hinzu. Die Anwendung erkennt die neuen Dateien und lädt die Miniaturansichten herunter. Wenn die Miniaturansichten heruntergeladen werden, werden sie in die Sammlungsansicht eingefügt. Aber weil das Herunterladen unterschiedlich lange dauern kann und dieser Download-Vorgang @ iasynchronous, an einem Punkt verliert iOS den Überblick über die Anzahl der Elemente in der Sammlung und das Ganze stürzt mit dieser katastrophalen, berüchtigten Nachricht ab.

*** App wird aufgrund einer nicht erfassten Ausnahme 'NSInternalInconsistencyException' beendet. Grund: 'Ungültige Aktualisierung: Ungültige Anzahl von Elementen in Abschnitt 0. Die Anzahl der Elemente in einem vorhandenen Abschnitt nach der Aktualisierung (213) muss der Anzahl von entsprechen Elemente, die in diesem Abschnitt vor der Aktualisierung enthalten waren (154), plus oder minus der Anzahl der Elemente, die in diesem Abschnitt eingefügt oder gelöscht wurden (40 eingefügt, 0 gelöscht), und plus oder minus der Anzahl der Elemente, die in diesen Abschnitt verschoben oder aus diesem Abschnitt entfernt wurden (0 verschoben) in, 0 ausgezogen). '

Der Beweis, dass ich etwas faules habe, ist, dass ich, wenn ich die Anzahl der Elemente im Datensatz drucke, genau 213 sehe. Der Datensatz stimmt also mit der richtigen Nummer überein und die Meldung ist Unsinn.

Ich hatte dieses Problem schon einmal,Hie aber das war ein iOS 7 Projekt. Irgendwie kehrte das Problem nun auf iOS 8 zurück und die dortigen Lösungen funktionieren nicht und nun der DatensatzIS IN SYNC.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage