title: NSFetchedResultsController - Delegate methods crashing under iPhone OS 3.0, but NOT UNDER 3.1
body: <p>Hey guys, so I've got my NSFetchedResultsController working fine under the 3.1 SDK, however I start getting some weird errors, specifically in the delegate methods when I try it under 3.0. I've determined that this is related to the NSFetchedResultsControllerDelegate methods. This is what I have set up.</p>
  
  <p>The inEditingMode stuff has to do with the way I've implemented adding another static section to the table.</p>
  
  <pre><code>- (void)controllerWillChangeContent:(NSFetchedResultsController*)controller {
      [self.tableView beginUpdates];
  }
  
  
  - (void)controller:(NSFetchedResultsController *)controller didChangeSection:(id &lt;NSFetchedResultsSectionInfo&gt;)sectionInfo atIndex:(NSUInteger)sectionIndex forChangeType:(NSFetchedResultsChangeType)type{
      NSIndexSet *sectionSet = [NSIndexSet indexSetWithIndex:sectionIndex];
  
      if(self.inEditingMode){
          sectionSet = [NSIndexSet indexSetWithIndex:sectionIndex + 1];
      }
  
      switch (type) {
          case NSFetchedResultsChangeInsert:
              [self.tableView insertSections:sectionSet withRowAnimation:UITableViewRowAnimationFade];
              break;
  
          case NSFetchedResultsChangeDelete:
              [self.tableView deleteSections:sectionSet withRowAnimation:UITableViewRowAnimationFade];
              break;
          default:
              [self.tableView reloadData];
              break;
  
      }
  }
  
  
  - (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type newIndexPath:(NSIndexPath *)newIndexPath{
      NSIndexPath *relativeIndexPath = indexPath;
      NSIndexPath *relativeNewIndexPath = newIndexPath;
  
      if(self.inEditingMode){
          relativeIndexPath = [NSIndexPath indexPathForRow:indexPath.row inSection:indexPath.section + 1];
          relativeNewIndexPath = [NSIndexPath indexPathForRow:newIndexPath.row inSection:newIndexPath.section + 1];
      }
  
      switch(type) {
          case NSFetchedResultsChangeInsert:
              [self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:relativeNewIndexPath] withRowAnimation:UITableViewRowAnimationFade];
              break;
          case NSFetchedResultsChangeDelete:
              [self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:relativeIndexPath] withRowAnimation:UITableViewRowAnimationFade];
              break;
          default:
              [self.tableView reloadData];
              break;
      }
  }
  
  
  -(void)controllerDidChangeContent:(NSFetchedResultsController *)controller{
      [self.tableView endUpdates];
  }
  </code></pre>
  
  <p>When I add an entity to the managed object context, I get the following error:</p>
  
  <pre><code>Serious application error.  Exception was caught during Core Data change processing: *** -[NSCFArray objectAtIndex:]: index (1) beyond bounds (1) with userInfo (null)
  </code></pre>
  
  <p>I put a breakpoint on objc_exception_throw, and the crash seems to be occuring inside of controllerDidChangeContent.</p>
  
  <p>If I comment out all of the self.tableView methods, and put a single [self.tableView reloadData] inside of controllerDidChangeContent, everything works as expected.</p>
  
  <p>Anybody have any idea as to why this is happening?</p>