title: NSFetchedResultsController ignores fetchLimit?
body: <p>I have a NSFetchedResultsController to update a UITableView with content from Core Data.  It's pretty standard stuff I'm sure you've all seen many times however I am running into slight problem.  First here's my code:</p>
  
  <pre><code>NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
  
   NSEntityDescription *entity = [NSEntityDescription entityForName:@"Article" inManagedObjectContext:self.managedObjectContext];
  
   [fetchRequest setEntity:entity];
  
   [fetchRequest setFetchLimit:20];
  
   NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(folder.hidden == NO)"];
   [fetchRequest setPredicate:predicate];
  
   NSSortDescriptor *sort1 = [NSSortDescriptor sortDescriptorWithKey:@"sortDate" ascending:NO];
   [fetchRequest setSortDescriptors:[NSArray arrayWithObjects:sort1, nil]];
  
   NSFetchedResultsController *controller = [[NSFetchedResultsController alloc]
           initWithFetchRequest:fetchRequest
           managedObjectContext:self.managedObjectContext
           sectionNameKeyPath:nil
           cacheName:nil];
   [fetchRequest release];
  
   controller.delegate = self;
  
   self.fetchedResultsController = controller;
  
   [controller release];
  
   NSError *error = nil;
   [self.fetchedResultsController performFetch:&amp;error];
   if (error) {
    // TODO send error notification
    NSLog(@"%@", [error localizedDescription]);
   }
  </code></pre>
  
  <p>The problem is that initially the store has no entities as it downloads and syncs from a webservice.  What happens is that the NSFetchedResultsController fills the table with over 150 rows of entities from the store, which is how many the webservice returns.  But I am setting a fetch limit of 20 which it appears to be ignoring.  However, if I close out the app and start again with data already in the store, it works fine.  Im my delegate i do this:</p>
  
  <pre><code>#pragma mark -
  #pragma mark NSFetchedResultsControllerDelegate methods
  
  - (void)controllerWillChangeContent:(NSFetchedResultsController *)controller {
   [self.tableView beginUpdates];
  }
  
  
  - (void)controller:(NSFetchedResultsController *)controller didChangeSection:(id  &lt;NSFetchedResultsSectionInfo&gt;)sectionInfo
   atIndex:(NSUInteger)sectionIndex forChangeType:(NSFetchedResultsChangeType)type {
  
  switch(type) {
      case NSFetchedResultsChangeInsert:
          [self.tableView insertSections:[NSIndexSet indexSetWithIndex:sectionIndex] withRowAnimation:UITableViewRowAnimationFade];
          break;
  
      case NSFetchedResultsChangeDelete:
          [self.tableView deleteSections:[NSIndexSet indexSetWithIndex:sectionIndex] withRowAnimation:UITableViewRowAnimationFade];
          break;
      }
  }
  
  
  - (void)controller:(NSFetchedResultsController *)controller didChangeObject:(id)anObject
  atIndexPath:(NSIndexPath *)indexPath forChangeType:(NSFetchedResultsChangeType)type newIndexPath:(NSIndexPath *)newIndexPath {
  
  UITableView *tableView = self.tableView;
  
  switch(type) {
  
      case NSFetchedResultsChangeInsert:
          [tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath] withRowAnimation:UITableViewRowAnimationFade];
          break;
  
      case NSFetchedResultsChangeDelete:
          [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
          break;
  
      case NSFetchedResultsChangeUpdate:
          [self configureCell:[tableView cellForRowAtIndexPath:indexPath] atIndexPath:indexPath];
          break;
  
      case NSFetchedResultsChangeMove:
          [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
          [tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:newIndexPath] withRowAnimation:UITableViewRowAnimationFade];
          break;
      }
  }
  
  
  - (void)controllerDidChangeContent:(NSFetchedResultsController *)controller {
   [self.tableView endUpdates]; 
  }
  </code></pre>
  
  <p>Which is pretty much copy-paste from Apple's dev documents, any ideas what's goin on?</p>