Skip to content

modecolems/UICollectionView-NSFetchedResultsController

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 

Repository files navigation

UICollectionView+NSFetchedResultsController

This is an example of how to use the new UICollectionView with NSFetchedResultsController. Unlike UITableView, which has beginUpdates and endUpdates methods, UICollectionView requires updates to be stored, and then submitted as a block to performBatchUpdate:completion:.

NSFetchedResultsController is designed for use with UITableView, and as such is tuned for some of it's quirks. Table views allow updates to items within sections that are also being updated. UICollectionView runs into exceptions if you add items into sections that are being added, delete items from sections that are being deleted, etc. This means that when using NSFetchedResultsController and UICollectionView, you need to filter the updates so you do not perform changes within sections that are also changing.

Status

Supported as of iOS 8. When using Swift, you may want to consider using JSQDataSourcesKit or translating this to Swift.

Setup

Clone the repo and look in the UICollectionViewController subclass. The logic inside the .m file shows how to queue updates.

Section updates are stored in _sectionChanges while updates to objects within sections are stored in _objectChanges. When controllerDidChangeContent: is called, these updates are dequeued, coalesced, and then submitted as a block to the UICollectionView.

Credit

Some of the logic for this is taken from this gist. Additional thanks to SixtyFrames for the significant update adding change-filtering.

About

How to use UICollectionView with NSFetchedResultsController

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Objective-C 100.0%