     }
     
     @objc func controller(controller: NSFetchedResultsController, didChangeSection sectionInfo: NSFetchedResultsSectionInfo, atIndex sectionIndex: Int, forChangeType type: NSFetchedResultsChangeType) {
-        if self.isFiltering {
+        if self.isFiltering || self.shouldReloadData {
             return
         }
 

        case .Insert:
            self.pendingActions.append() {
                [weak self] in
                
                self?.collectionView?.insertSections(NSIndexSet(index: sectionIndex))
                self?.collectionView?.collectionViewLayout.invalidateLayout()
            }

    @objc func controllerWillChangeContent(controller: NSFetchedResultsController) {
        self.pendingActions.removeAll()
        self.updatedIndexPaths.removeAll()
        self.shouldReloadData = false
        self.isFiltering = self.provider?.objectFilter != nil
    }

    @objc func controller(controller: NSFetchedResultsController, didChangeObject anObject: AnyObject, atIndexPath indexPath: NSIndexPath?, forChangeType type: NSFetchedResultsChangeType, newIndexPath: NSIndexPath?) {
        if self.isFiltering || self.shouldReloadData {
            return
        }
    
        switch type {
        case .Insert:
            if self.updatedIndexPaths.contains(newIndexPath!) {
                self.pendingActions.removeAll()
                self.shouldReloadData = true
            } else {
                self.pendingActions.append() {
                    [weak self] in
                    self?.collectionView?.insertItemsAtIndexPaths([ newIndexPath! ])
                }
            }
