TableView UISearchBar падает при поиске - PullRequest
0 голосов
/ 19 сентября 2011

Я какое-то время пытался найти средство для просмотра таблицы моего приложения, сейчас пытаюсь заставить его работать, но в консоли все время появляется та же ошибка.

Завершение работы приложениячтобы исключить исключение 'NSInvalidArgumentException', причина: '[NSCFDictionary rangeOfString: options:]: нераспознанный селектор, отправленный экземпляру

DataSource - это массив, принимающий значение itz из словаря .... и tableDataбудут храниться данные, которые будут отображаться в таблице.Q: Предположим, у меня есть словарь с 5 значениями, каждое из которых имеет разные ключи, соответствующие этим значениям ... затем я помещаю этот словарь в массив.Можно ли использовать этот массив в качестве источника данных для поиска?и я использую тот же массив в cellForRowAtIndexPath для отображения данных в моих ячейках.

Plz предлагают с фрагментом кода.

Вот мой код для textDidChange

    -(void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
    {   
        [tableData removeAllObjects];// remove all data that belongs to previous search

        if([searchText isEqualToString:@""]){
            searchText==nil;
            [tableview reloadData];     
            return;     
        }

        NSInteger counter = 0;  
        for(NSString *name in dataSource)       
        {       
            NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init];      
            NSRange r = [name rangeOfString:searchText options:NSCaseInsensitiveSearch];        
            if(r.location != NSNotFound)            
            {           
                if(r.location== 0)//that is we are checking only the start of the names.                
                {               
                    [tableData addObject:name];             
                }           
            }       
            counter++;      
            [pool release];     
        }   
        [tableview reloadData]; 
    }

1 Ответ

0 голосов
/ 19 сентября 2011

Попробуйте с дополнительным условием ...

    if([searchText isEqualToString:@""] || searchText == nil){
    }

Дайте мне знать, у вас это работает или нет?

Если dataSource будет вашим NSMutableArray ....

    for (int i = 0; i < [dataSource count]; i++)
    {
        NSMutableDictionary *temp = (NSMutableDictionary*) [dataSource objectAtIndex:i];
        NSString *name = [NSString stringWithFormat:@"%@", [temp valueForKey:@"name"]];
        NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init];      
        NSRange r = [name rangeOfString:searchText options:NSCaseInsensitiveSearch];        
        if(r.location != NSNotFound)            
        {           
            if(r.location== 0)//that is we are checking only the start of the names.                
            {               
                [tableData addObject:name];             
            }           
        }       
        counter++;      
        [pool release];
    }
...