insertItemsAtIndexPaths Update-Fehler

In UICollectionView, ich bin versucht, performBatchUpdates:completion updates durchführen, um meine grid-Ansicht. Meine Daten Quell-array self.results.

Hier ist mein code:

dispatch_sync(dispatch_get_main_queue(), ^{

            [self.collectionView performBatchUpdates:^{

                int resultsSize = [self.results count];
                [self.results addObjectsFromArray:newData];

                NSMutableArray *arrayWithIndexPaths = [NSMutableArray array];
                if (resultsSize == 0) {
                    [arrayWithIndexPaths addObject:[NSIndexPath indexPathForRow:0 inSection:0]];
                }

                else {
                    for (int i = 0; i < resultsSize; i++) {
                        [arrayWithIndexPaths addObject:[NSIndexPath indexPathForRow:resultsSize + i inSection:0]];
                    }
                }

                for (id obj in self.results)
                    [self.collectionView insertItemsAtIndexPaths:arrayWithIndexPaths];

            } completion:nil];

Erklärung, was ich habe /was ich mache:

Dieser code läuft gut, wenn die erste Aufnahme in der Ansicht Sammlung ist fertig. Wenn ich jedoch hinzufügen/fügen Sie mehr Daten in meine Sammlung anzeigen (durch Aktualisierung self.results und diese aufrufen), diese gibt die folgende Fehlermeldung:

* Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Ungültiges update: ungültige
Anzahl der Elemente in Abschnitt 0. Die Anzahl der Elemente, die in einer
bestehenden Abschnitt nach dem update (8) muss gleich der Anzahl der
enthaltene Elemente in diesem Abschnitt, bevor Sie das update (4), plus oder minus
die Anzahl der Elemente, die eingefügt oder gelöscht, der Abschnitt (32
eingefügt, gelöscht 0) und plus oder minus die Anzahl der Elemente verschoben in
oder aus diesem Bereich (0 verschoben, 0 verschoben).'

Ich verstehe dies bedeutet, dass die Datenquelle nicht aktualisiert wurde ordnungsgemäß. Aber beim Abfragen meiner self.results array, sehe ich die neue Zählung der Daten. Ich mache auf der ersten Linie, die mit addObjectsFromArray. Ich habe auch gespeichert, die alten Ergebnisse Größe in resultsSize. Ich benutze diese variable hinzufügen, um den neu hinzugefügten index-Pfade in arrayWithIndexPaths.

Nun beim hinzufügen/einfügen von posten, ich habe versucht, die folgenden for-Schleifen:

for (id obj in self.results) was ich nun benutze. Es funktioniert zunächst aber weitere Einsätze abstürzt.

for (UIImage *image in newData) so gut funktioniert zunächst aber weitere Einsätze crash.

Vom Namen der Funktion, ich glaube, dass insertItemsAtIndexPaths wird, legen Sie alle Elemente auf diese index-Pfaden, ohne eine Schleife. Jedoch, ohne eine Schleife, die app stürzt ab, wenn er zunächst versucht, füllen Sie die Daten.

Ich habe auch versucht looping aus resultsSize + 1 bis der neue self.results count (enthält die neuen Daten) und stürzt bei der ersten update.

Irgendwelche Vorschläge, was ich falsch mache?

Danke,

InformationsquelleAutor darksky | 2012-09-30

Schreibe einen Kommentar