Mi piacerebbe utilizzare NSFetchedResultsControllerRelegate in un controllo CollectionViewController. Quindi ho appena cambiato il metodo per TableViewController per il CollectionView.NSFetchedResultsContollerDelegate for 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];
}
Ma io non so come gestire la WillChangeContent
(beginUpdates
per TableView
) e DidChangeContent
(endUpdates
per TableVie
w) per un CollectionView
.
Tutto funziona correttamente tranne quando si sposta un elemento da una sezione a un'altra sezione. Allora ottengo il seguente errore.
Di solito si tratta di un bug all'interno di un osservatore di NSManagedObjectContextObjectsDidChangeNotification. Aggiornamento non valido: numero non valido di articoli nella sezione 0 ....
Qualche idea come posso risolvere questo problema?
Grazie, Martin. Ho provato questo senza la soluzione in anticipo - non ho visto l'aggiornamento per la soluzione alternativa. Ora con la soluzione del problema nella vista della raccolta finalmente funziona. A causa del fatto che ho intestazioni e piè di pagina questo è stato un ottimo aiuto. Spero tuttavia che questo errore verrà risolto una volta. – aquarius68
@ aquarius68: Non è proprio un bug. Il problema è che i metodi di delega dell'RFC e i metodi di aggiornamento della vista di raccolta non si adattano perfettamente. Correggere ciò significherebbe modificare o estendere una delle API. - Ma sono contento che tu abbia funzionato. –
Non ricevo più i messaggi di errore ma non funziona ancora completamente; Ad esempio, se l'utente aggiunge il primo elemento funziona, ma se l'utente aggiunge il secondo elemento, funziona solo se torno alla vista tabella che contiene oggetti correlati agli oggetti della vista di raccolta. – aquarius68