Нечувствительная к регистру панель UISearch?

В табличном представлении я установил 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];
}
5
задан Arun_ 31 December 2013 в 09:42
поделиться

3 ответа

Самый простой способ сделать это, вероятно,

 NSRange r = [name rangeOfString:searchText options:NSCaseInsensitiveSearch];
14
ответ дан 18 December 2019 в 09:48
поделиться

Когда вы делаете сравнение, попробуйте сделать это с версией в нижнем регистре.

NSRange r = [[name lowercaseString] rangeOfString:[searchText lowercaseString]];

Чтобы уточнить, это не изменит ни одно из значений, просто вернет версию оригинала в нижнем регистре, которую вы затем используете для сравнения,

1
ответ дан 18 December 2019 в 09:48
поделиться

Есть какая-то функция 'lowercaseString', не знаю, где я с ней столкнулся, поскольку не имею никакого отношения к iPhone, уверен, если вы погуглите, то найдете что-нибудь.

0
ответ дан 18 December 2019 в 09:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: