title: [__NSCFConstantString objectAtIndex:]: unrecognized selector sent to instance 0x3141c
body: <p>I am trying to get a search display controller working and have just got this error:</p>
  
  <blockquote>
    <p>2012-11-30 14:48:19.903 searchstory[5812:c07] -[__NSCFConstantString
    objectAtIndex:]: unrecognized selector sent to instance 0x3141c
    2012-11-30 14:48:19.904 searchstory[5812:c07] <strong>* Terminating app due
    to uncaught exception 'NSInvalidArgumentException', reason:
    '-[__NSCFConstantString objectAtIndex:]: unrecognized selector sent to
    instance 0x3141c'
    *</strong> First throw call stack: (0x1cc0012 0x10fde7e 0x1d4b4bd 0x1cafbbc 0x1caf94e 0x2901d 0xfff4b 0x10001f 0xe880b 0xe6ec2 0xf1d51 0xfa3ad
    0x102454 0x329635 0x32c0de 0x27bd85 0x1111705 0x48873 0x10a2ce
    0x109960 0x11678c 0x120bf6 0xbbedc9 0x1d1a0c5 0x1c74efa 0xaf3482
    0x359509e 0x26e426a 0x2b1f78c 0x2b22588 0x356fd12 0x356fe4a 0x35705c0
    0x35703b8 0x356f904 0x295eeab 0x295ee13 0x3542596 0x356ebcc 0x2b1cac6
    0x2b1bd56 0x2b4f320 0x31a9afd 0x2b45e66 0x2b470aa 0x2b4501e 0x31a81aa
    0x2b5f491 0x2b4f0ca 0x2b2303e 0x27207fb 0x11116b0 0x358aed0 0x275f384
    0x27614df 0x206254 0x1c904f 0x1ca3b8 0x1c8f5e 0x1d312d 0x5643b
    0x153e05 0x153e05 0x153e05 0x153e05 0x153e05 0x153e05 0x153e05
    0x153e05 0x153e05 0x56495 0x55e66 0x5624b 0x47cf8 0x1c1bdf9 0x1c1bad0
    0x1c35bf5 0x1c35962 0x1c66bb6 0x1c65f44 0x1c65e1b 0x1c1a7e3 0x1c1a668
    0x4565c 0x1c8d 0x1bb5) libc++abi.dylib: terminate called throwing an
    exception</p>
  </blockquote>
  
  <p>I have been playing about with the code trying to get this to work. The code I have for the search and for the tablerow is:</p>
  
  <pre><code>    - (UITableViewCell *)tableView:(UITableView *)tableView
           cellForRowAtIndexPath:(NSIndexPath *)indexPath
  {
  
  
  
      NSString *contentForThisRow = nil;
  
      if (tableView == [[self searchDisplayController] searchResultsTableView])
          contentForThisRow = [[[[self searchResults]objectAtIndex:indexPath.section] objectAtIndex:indexPath.row] objectForKey:@"name"];
      else
          contentForThisRow = [[[[self contentsList] objectAtIndex:indexPath.section] objectAtIndex:indexPath.row] objectForKey:@"name"];
  
      static NSString *CellIdentifier = @"stoneCell";
  
      UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
      if (cell == nil)
      {
          cell.textLabel.text = [[[self.contentsList objectAtIndex:indexPath.section] objectAtIndex:indexPath.row] objectForKey:@"name"];
          [cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];
          // Do anything that should be the same on EACH cell here.  Fonts, colors, etc.
      }
  
      // Do anything that COULD be different on each cell here.  Text, images, etc.
      [[cell textLabel] setText:contentForThisRow];
  
  
      return cell;
  }
  
  - (void)handleSearchForTerm:(NSString *)searchTerm
  {
  
  
      [self setSavedSearchTerm:searchTerm];
  
      if ([self searchResults] == nil)
      {
          NSMutableArray *array = [[NSMutableArray alloc] init];
          [self setSearchResults:array];
  
      }
  
      [[self searchResults] removeAllObjects];
  
      if ([[self savedSearchTerm] length] != 0)
      {
          for (NSMutableArray *array in contentsList)
          {
              for (NSDictionary* dictionary in array)
              {
                  NSString *currentstring = [dictionary objectForKey:@"name"];
                  NSRange r = [currentstring rangeOfString:searchTerm options:NSCaseInsensitiveSearch];
                  if (r.location != NSNotFound) {
                      [[self searchResults] addObject:currentstring];
                  }
              }
          }
      }
  
  
  }
  </code></pre>
  
  <p>Can anyone tell me where I'm going wrong? I'm assuming it's the objectAtIndex but which one?</p>
  
  <p>Revision - I have tried to change my code around a little and now I am getting the search working but no cell titles on the original view and the search results are repeating under every heading! the code I have now is:</p>
  
  <pre><code>- (void)handleSearchForTerm:(NSString *)searchTerm
  {
      [self setSavedSearchTerm:searchTerm];
  
      if ([self searchResults] == nil)
      {
          NSMutableArray *array = [[NSMutableArray alloc] init];
          [self setSearchResults:array];
      }
  
      [[self searchResults] removeAllObjects];
  
      if ([[self savedSearchTerm] length] != 0)
      {
          for (NSMutableArray *array in contentsList)
          {
              for (NSDictionary* dictionary in array)
              {
                  NSString *currentstring = [dictionary objectForKey:@"name"];
                  NSRange r = [currentstring rangeOfString:searchTerm options:NSCaseInsensitiveSearch];
                  if (r.location != NSNotFound) {
                      [[self searchResults] addObject:currentstring];
                  }
              }
          }
      }
  }
  
  - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
      // Return the number of sections.
      if (tableView == [[self searchDisplayController] searchResultsTableView])
          return [self.stoneSections count];
      else
         return [self.stoneSections count];
  }
  
  - (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section {
      return [self.stoneSections objectAtIndex:section];
  }
  
  #pragma mark -
  #pragma mark UITableViewDataSource Methods
  
  - (NSInteger)tableView:(UITableView *)tableView
   numberOfRowsInSection:(NSInteger)section
  {
      NSInteger rows;
  
      if (tableView == [[self searchDisplayController] searchResultsTableView])
          rows = [[self searchResults] count];
      else
          rows = [[self.contentsList objectAtIndex:section] count];
  
  
      return rows;
  }
  
  - (UITableViewCell *)tableView:(UITableView *)tableView
           cellForRowAtIndexPath:(NSIndexPath *)indexPath
  {
      NSString *contentForThisRow = nil;
  
      if (tableView == [[self searchDisplayController] searchResultsTableView])
          contentForThisRow = self.searchResults [indexPath.row];
      else
          contentForThisRow = [[[[self contentsList] objectAtIndex:indexPath.section] objectAtIndex:indexPath.row] objectForKey:@"name"];
  
      static NSString *CellIdentifier = @"stoneCell";
  
      UITableViewCell *cell = nil;
      if(mainTableView == self.mainTableView){
          cell = [mainTableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
          cell.textLabel.text = self.searchResults [indexPath.row];
      } else {
          cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
          cell.textLabel.text = [[[self.contentsList objectAtIndex:indexPath.section] objectAtIndex:indexPath.row] objectForKey:@"name"];
      }
  
      return cell;
  }
  </code></pre>