title: NSFetchedResultsController crashes on objectAtIndexPath?
body: <p>I'm getting a crash when trying to access an object in <code>NSFetchedResultsController</code>.</p>
  
  <pre><code>2013-11-10 15:15:06.568 Social[11503:70b] CoreData: error: Serious application error.  Exception was caught during Core Data change processing.  This is usually a bug within an observer of NSManagedObjectContextObjectsDidChangeNotification.  *** -[__NSArrayI objectAtIndex:]: index 2 beyond bounds for empty array with userInfo (null)
  2013-11-10 15:15:06.570 Social[11503:70b] *** Terminating app due to uncaught exception 'NSRangeException', reason: '*** -[__NSArrayI objectAtIndex:]: index 2 beyond bounds for empty array'
  </code></pre>
  
  <p><strong>viewDidLoad</strong></p>
  
  <pre><code>- (void)viewDidLoad
  {
      [super viewDidLoad];
  
      self.resultController = [DataEngine sharedInstance].postsFetchedResultController;
      self.resultController.delegate = self;
      [self.resultController performFetch:nil];
  
      [self.tableView reloadData];
  
      [[DataEngine sharedInstance] fetchInBackground];
  }
  </code></pre>
  
  <p><strong>Result Controller Delegate</strong></p>
  
  <pre><code>#pragma mark - NSFetchedResultsControllerDelegate Methods -
  
  - (void)controllerWillChangeContent:(NSFetchedResultsController *)controller
  {
      [self.tableView beginUpdates];
  }
  
  - (void)controllerDidChangeContent:(NSFetchedResultsController *)controller
  {
      [self.tableView endUpdates];
  }
  
  - (void)controller:(NSFetchedResultsController *)controller
     didChangeObject:(id)anObject
         atIndexPath:(NSIndexPath *)indexPath
       forChangeType:(NSFetchedResultsChangeType)type
        newIndexPath:(NSIndexPath *)newIndexPath
  {
      switch (type)
      {
          case NSFetchedResultsChangeInsert:
              [self.tableView insertRowsAtIndexPaths:@[indexPath]
                                    withRowAnimation:UITableViewRowAnimationAutomatic];
              break;
  
          case NSFetchedResultsChangeUpdate:
              [self.tableView reloadRowsAtIndexPaths:@[indexPath]
                                    withRowAnimation:UITableViewRowAnimationAutomatic];
              break;
  
          case NSFetchedResultsChangeDelete:
              [self.tableView deleteRowsAtIndexPaths:@[indexPath]
                                    withRowAnimation:UITableViewRowAnimationAutomatic];
              break;
  
          case NSFetchedResultsChangeMove:
              [self.tableView moveRowAtIndexPath:indexPath toIndexPath:newIndexPath];
              break;
  
          default:
              break;
      }
  }
  </code></pre>
  
  <p><strong>table view</strong></p>
  
  <pre><code>#pragma mark - UITableView Delegate &amp; Datasrouce -
  
  - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
  {
      return self.resultController.fetchedObjects.count;
  }
  
  - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
  {
      return [self cellForRowAtIndexPath:indexPath];
  }
  </code></pre>