使用搜索栏搜索tableview时出现NCFString错误

时间:2012-07-27 10:29:16

标签: objective-c xcode

我有一个从json string.everthing解析的表视图很好。如果我在我的搜索栏中输入一个字符我得到这个错误'-[__NSCFString countByEnumeratingWithState:objects:count:]: unrecognized selector sent to instance 0x1d52ac50'下面是代码。下面的变量名数据是NSMutableArray你们可以帮助我吗?

- (BOOL)searchDisplayController:(UISearchDisplayController *)controllershouldReloadTableForSearchString:(NSString *)searchString
    {
[searchData removeAllObjects];

NSArray *group;
for(group in nameData)
{
    NSLog(@"wat am i doing here:%@",group);
    NSMutableArray *newGroup = [[NSMutableArray alloc] init];
    NSString *element;

    for(element in group)
    {
        NSRange range = [element rangeOfString:searchString options:NSCaseInsensitiveSearch];

        if (range.length > 0) {
            [newGroup addObject:element];
        }
    }

    if ([newGroup count] > 0) {
        [searchData addObject:newGroup];
    }

}

return YES;
 }

1 个答案:

答案 0 :(得分:1)

请查看此代码

 - (BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString
{
    NSMutableArray *array=[[NSMutableArray alloc]init];
    NSDictionary *naming= [self.friendsDictionary objectForKey:@"data"];
    NSLog(@"ggg %@",[self.friendsDictionary objectForKey:@"data"]);
    for(int i =0 ; i< [[self.friendsDictionary objectForKey:@"data"] count]; i++){
        [array addObject:[[[self.friendsDictionary objectForKey:@"data"] objectAtIndex:i] objectForKey:@"name"]];
    }
    NSLog(@"Array %@", array);

    if(self.searchDisplayController.searchBar.text.length>0) 
    {
        NSString *strSearchText = self.searchDisplayController.searchBar.text;
        NSMutableArray *group = [[NSMutableArray alloc]init];
        for (int i=0; i<array.count; i++) {

            NSString *strData = [array objectAtIndex:i]; 
              NSLog(@"string Data:%@",strData);
            NSRange rng = [strData rangeOfString:strSearchText options:NSCaseInsensitiveSearch];
            if(rng.location != NSNotFound)
            {
                if(rng.location== 0)//that is we are checking only the start of the names.
                {
                    [group addObject:strData]; 
                }
            }
        }
        if ([group count] > 0) 
        {
    searchData = [[NSMutableArray alloc] init];
            [searchData addObjectsFromArray:group];
            NSLog(@"Sear %@", searchData);

        }
    } 
    return YES;
  }