         }
     }
     
+    /**
+        Notifies the receiver of the addition or removal of a section.
+    
+        :param: controller The fetched results controller that sent the message.
+        :param: sectionInfo The section that changed.
+        :param: sectionIndex The index of the changed section.
+        :param: type The type of change (insert or delete).
+    */
     public func controller(controller: NSFetchedResultsController, didChangeSection sectionInfo: NSFetchedResultsSectionInfo, atIndex sectionIndex: Int, forChangeType type: NSFetchedResultsChangeType) {
         if !suspendAutomaticTrackingOfChangesInManagedObjectContext {
             switch type {

}

//  MARK: - CoreData driven UICollectionViewController
public class CoreDataCollectionViewController: UICollectionViewController, NSFetchedResultsControllerDelegate {
    
    //
    //  Same concept as CoreDataTableViewController, but modified for use with UICollectionViewController.
    //
    //  This class mostly just copies the code from NSFetchedResultsController's documentation page
    //  into a subclass of UICollectionViewController.
    //
    //  Just subclass this and set the fetchedResultsController.
    //  The only UICollectionViewDataSource method you'll HAVE to implement is collectionView:cellForItemAtIndexPath.
    //  And you can use the NSFetchedResultsController method objectAtIndexPath: to do it.
    //
    //  Remember that once you create an NSFetchedResultsController, you CANNOT modify its @propertys.
    //  If you want new fetch parameters (predicate, sorting, etc.),
    //  create a NEW NSFetchedResultsController and set this class's fetchedResultsController @property again.
    //
    
    // The controller (this class fetches nothing if this is not set).
    public var fetchedResultsController: NSFetchedResultsController? {
        didSet {
            if let frc = fetchedResultsController {

            }
        }
    }

    /**
        Causes the `fetchedResultsController` to refetch the data.
        You almost certainly never need to call this.
        The `NSFetchedResultsController` class observes the context
        (so if the objects in the context change, you do not need to call `performFetch`
        since the `NSFetchedResultsController` will notice and update the collection view automatically).
        This will also automatically be called if you change the `fetchedResultsController` property.
    */
    public func performFetch() {
        if let frc = fetchedResultsController {
            var error: NSError?
