title: Assertion failure when using UISearchDisplayController in UITableViewController
body: <p>I've been trying to add simple Search functionality to a TableViewController in my app. I followed Ray Wenderlich's tutorial. I have a tableView with some data, I added the search bar + display controller in storyboard, and then I have this code: </p>
  
  <pre><code>#pragma mark - Table View
       - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
          UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"BreedCell" forIndexPath:indexPath];
  
          //Create PetBreed Object and return corresponding breed from corresponding array
          PetBreed *petBreed = nil;
  
          if(tableView == self.searchDisplayController.searchResultsTableView)
              petBreed = [_filteredBreedsArray objectAtIndex:indexPath.row];
          else
              petBreed = [_breedsArray objectAtIndex:indexPath.row];
  
          cell.accessoryType  = UITableViewCellAccessoryDisclosureIndicator;
          cell.textLabel.text = petBreed.name;
  
          return cell;
      }
  
  #pragma mark - Search
      -(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString {
          [_filteredBreedsArray removeAllObjects];
          NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF.name contains[c] %@",searchString];
          _filteredBreedsArray = [[_breedsArray filteredArrayUsingPredicate:predicate] mutableCopy];
  
          return YES;
      }
  
      -(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchScope:(NSInteger)searchOption {
          // Tells the table data source to reload when scope bar selection changes
  
          [_filteredBreedsArray removeAllObjects];
          NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF.name contains[c] %@",self.searchDisplayController.searchBar.text];
          _filteredBreedsArray = [[_breedsArray filteredArrayUsingPredicate:predicate] mutableCopy];
          return YES;
      }
  </code></pre>
  
  <p>The standard stuff, but when I enter text in the search bar it crashes every time with this error: </p>
  
  <pre><code>2013-01-07 19:47:07.330 FindFeedo[3206:c07] *** Assertion failure in -[UISearchResultsTableView dequeueReusableCellWithIdentifier:forIndexPath:], /SourceCache/UIKit_Sim/UIKit-2372/UITableView.m:4460
  2013-01-07 19:47:07.330 FindFeedo[3206:c07] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'unable to dequeue a cell with identifier BreedCell - must register a nib or a class for the identifier or connect a prototype cell in a storyboard'
  </code></pre>
  
  <p>I understand that in iOS 6 the handling and dequeueing system for cells changed, and also that the search uses a different tableView, so I thought the problem was that the search tableView with the filtered results didn't know about the cell, so I put this in my viewDidLoad: </p>
  
  <pre><code>[self.searchDisplayController.searchResultsTableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"BreedCell"];
  </code></pre>
  
  <p>And voila! It worked... Only the first time you search. If you go back to the original results and search again, the app crashes with the same error. I thought about maybe adding all the</p>
  
  <pre><code>if(!cell){//init cell here};
  </code></pre>
  
  <p>stuff to the cellForRow method, but doesn't that go against the whole purpose of having the dequeueReusableCellWithIdentifier:forIndexPath: method? Anyway, I'm lost. What am I missing? Help, please. Thank you in advance for all your time (: </p>
  
  <p>Alex.</p>