不区分大小写的SearchBar Xcode

时间:2016-11-06 11:22:54

标签: ios objective-c iphone xcode searchbar

我在Objective-C中使用Xcode开发应用程序。该应用程序有一个餐厅的TableView。我的问题是当我使用SearchBar时,过滤器区分大小写,我希望得到一个不区分大小写的搜索。 我知道我必须改变我的searchBar textDidChange方法,我寻求帮助,但我不知道如何在我的情况下改变它。有人能帮我吗?非常感谢你。

这是我的searchBar textDidChange方法:

-(void) searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {

    if (searchText.length == 0) {
        //Set our boolean flag
        isFiltered = NO;
    } else {
        //Set our boolean flag
        isFiltered = YES;
    }
    //Alloc and init our filteredData
    filteredRest = [[NSMutableArray alloc] init];

    for (Restaurant *item in originData) {
        if ([item.title containsString:searchText]) {
            [filteredRest addObject:item];
        }
    }

    //Reload our table view
    [self.tableView reloadData];
}

谢谢。

3 个答案:

答案 0 :(得分:4)

更改此行

if ([item.title containsString:searchText]) {
    [filteredRest addObject:item];
}

有了这个

if ([[item.title lowercaseString]containsString:[searchText lowercaseString]]) {
    [filteredRest addObject:item];
}

答案 1 :(得分:1)

这是您应该更新代码的方式:

- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText {

    if (searchText.length == 0) {
        //Set our boolean flag
        isFiltered = NO;
    } else {
        //Set our boolean flag
        isFiltered = YES;
    }
    //Alloc and init our filteredData
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"title CONTAINS[cd] %@", searchText];
    filteredRest = [originData filteredArrayUsingPredicate:predicate]

    //Reload our table view
    [self.tableView reloadData];
}

答案 2 :(得分:0)

一个更好的解决方案。

if (!([item.title rangeOfString:searchText options:NSCaseInsensitiveSearch].location == NSNotFound))
    {
       [filteredRest addObject:item];
    }