Ich möchte die NSFetchedResultsControllerRelegate in einem CollectionViewController verwenden. Daher habe ich gerade die Methode für den TableViewController für die CollectionView geändert.NSFetchedResultsContollerDelegate für CollectionView
(void)controller:(NSFetchedResultsController *)controller didChangeSection:(id <NSFetchedResultsSectionInfo>)sectionInfo
atIndex:(NSUInteger)sectionIndex forChangeType:(NSFetchedResultsChangeType)type {
switch(type) {
case NSFetchedResultsChangeInsert:
[self.collectionView insertSections:[NSIndexSet indexSetWithIndex:sectionIndex]];
break;
case NSFetchedResultsChangeDelete:
[self.collectionView deleteSections:[NSIndexSet indexSetWithIndex:sectionIndex] ];
break;
}
}
(void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject
atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type
newIndexPath:(NSIndexPath *)newIndexPath {
UICollectionView *collectionView = self.collectionView;
switch(type) {
case NSFetchedResultsChangeInsert:
[collectionView insertItemsAtIndexPaths:[NSArray arrayWithObject:newIndexPath]];
break;
case NSFetchedResultsChangeDelete:
[collectionView deleteItemsAtIndexPaths:[NSArray arrayWithObject:indexPath]];
break;
case NSFetchedResultsChangeUpdate:
[collectionView reloadItemsAtIndexPaths:[NSArray arrayWithObject:indexPath]];
break;
case NSFetchedResultsChangeMove:
[collectionView deleteItemsAtIndexPaths:[NSArray arrayWithObject:indexPath]];
[collectionView insertItemsAtIndexPaths:[NSArray arrayWithObject:newIndexPath]];
break;
}
}
(void)controllerDidChangeContent:(NSFetchedResultsController *)controller {
[self.collectionView reloadData];
}
Aber ich weiß nicht, wie die WillChangeContent
(beginUpdates
für TableView
) und DidChangeContent
(endUpdates
für TableVie
w) zu handhaben für ein CollectionView
.
Alles funktioniert gut, außer wenn ich ein Element von einem Abschnitt zu einem anderen Abschnitt verschiebe. Dann bekomme ich den folgenden Fehler.
Dies ist normalerweise ein Fehler innerhalb eines Beobachters von NSManagedObjectContextObjectsDidChangeNotification. Ungültiges Update: ungültige Anzahl von Artikeln in Abschnitt 0 ....
Irgendeine Idee, wie kann ich dieses Problem lösen?
Danke, Martin. Ich habe das ohne die Problemumgehung zuvor versucht - das Update für die Problemumgehung nicht angezeigt. Jetzt mit Workaround des Fehlers in der Sammlungsansicht funktioniert es schließlich. Aufgrund der Tatsache, dass ich Kopf- und Fußzeilen habe, war dies eine sehr gute Hilfe. Ich hoffe dennoch, dass dieser Bug einmal gelöst wird. – aquarius68
@ aquarius68: Es ist nicht wirklich ein Fehler. Das Problem besteht darin, dass die FRC-Delegatmethoden und die Aktualisierungsmethoden für die Sammlungsansicht nicht wirklich zusammenpassen. Das zu beheben würde bedeuten, eine der APIs zu ändern oder zu erweitern. - Aber ich bin froh, dass du es funktioniert hast. –
Ich bekomme die Fehlermeldungen nicht mehr, aber es funktioniert noch nicht ganz; d. h. wenn der Benutzer das erste Element hinzufügt, funktioniert es, aber wenn der Benutzer das zweite Element hinzufügt, funktioniert es nur, wenn ich zu der Tabellenansicht zurückkehre, die Objekte enthält, die sich auf die Objekte der Sammlungsansicht beziehen. – aquarius68