     }
     
     public func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
-        let sections:[NSFetchedResultsSectionInfo] = fetchedController.sections! as [NSFetchedResultsSectionInfo]
+        guard let controller = fetchedController, sections = controller.sections else {
+            return 0
+        }
+        
         return sections[section].numberOfObjects
     }
     
     public func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
         let cell = tableView.dequeueReusableCellWithIdentifier(FetchedTableCellIdentifier)!
-        let object = fetchedController.objectAtIndexPath(indexPath)
+        let object = fetchedController!.objectAtIndexPath(indexPath)
         configureCell(cell, atIndexPath: indexPath, object: object, forMeasuring:false)
         return cell
     }

    }
    
    public override func viewWillAppear(animated: Bool) {
        if fetchedController != nil {
            return
        }
        
        fetchedController = createFetchedController()
        fetchedController.delegate = self
        tableView.reloadData()
    }
    
    public func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        guard let sections = fetchedController.sections else {
            return 0
        }
        


public class FetchedTableViewController: UIViewController, FullScreenTableCreate, UITableViewDataSource, UITableViewDelegate, NSFetchedResultsControllerDelegate {
    @IBOutlet public var tableView: UITableView!
    private var fetchedController: NSFetchedResultsController?
    private var measuringCell: UITableViewCell?
    
    deinit {
