UISearch bar不区分大小写?

5

在表格视图中,我设置了一个UISearchBar,设置了代理并添加了协议。

当用户点击单词时,一切都很好,除了“tennis”的搜索与“Tennis”不同。

如何使搜索栏成为不区分大小写的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];
}
4个回答

14

这可能是最简单的方法

 NSRange r = [name rangeOfString:searchText options:NSCaseInsensitiveSearch];

谢谢Noah!我在Google上发现了这个。 - ambertch

2

试试这个。

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

    if([searchText isEqualToString:@""]){
        [table reloadData];
        return;
    }

    NSInteger counter = 0;
    NSArray *result = [[NSArray alloc] initWithArray:[resultArray filteredArrayUsingPredicate:predicate]];

    for (NSString *name in  resultArray  ) {
        NSAutoreleasePool *pool = [[NSAutoreleasePool alloc]init];
        NSRange r = [name rangeOfString:searchText options:NSCaseInsensitiveSearch];
        //NSRange r=[name rangeOfString:searchText options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch) range:NSMakeRange(0, [searchText length])];
        if(r.location != NSNotFound)
        {
            if(r.location== 0)//that is we are checking only the start of the names.
            {
                [DetailSearchArray addObject:name]; 
            }
        }

        }
        counter++;
        [pool release];
    }

    [table reloadData];
}

1

在进行比较时,请尝试使用小写版本进行比较。

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

请注意,这不会更改任何值,只是返回原始版本的小写形式,你可以使用它与其他进行比较。


0

有一个'lowercaseString'函数,不知道我在哪里看到过这个,因为我与iPhone没有任何关系,如果你谷歌一下应该能找到一些相关的东西。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接