В табличном представлении я установил UISearchBar, установил делегата и добавляю протокол.
Когда пользователь касается слова, все хорошо за исключением того, что поиск "тенниса" отличается от "Тенниса".
Как я могу сделать панель поиска нечувствительным к регистру UISearchBar? Вот мой код, где я думаю, что все происходит:
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
{
[tableData removeAllObjects];// remove all data that belongs to previous search
if([searchText isEqualToString:@""]||searchText==nil){
[myTableView reloadData];
return;
}
NSInteger counter = 0;
for(NSString *name in dataSource)
{
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init];
NSRange r = [name rangeOfString:searchText];
if(r.location != NSNotFound)
[tableData addObject:name];
counter++;
[pool release];
}
[myTableView reloadData];
}
Самый простой способ сделать это, вероятно,
NSRange r = [name rangeOfString:searchText options:NSCaseInsensitiveSearch];
Когда вы делаете сравнение, попробуйте сделать это с версией в нижнем регистре.
NSRange r = [[name lowercaseString] rangeOfString:[searchText lowercaseString]];
Чтобы уточнить, это не изменит ни одно из значений, просто вернет версию оригинала в нижнем регистре, которую вы затем используете для сравнения,
Есть какая-то функция 'lowercaseString', не знаю, где я с ней столкнулся, поскольку не имею никакого отношения к iPhone, уверен, если вы погуглите, то найдете что-нибудь.