0

我是 UISearchBar 的新手,我有一些用于搜索单词的代码。

- (void)searchTableView
{
NSLog(@"Searching...");
NSString *searchText = searchBar.text;

NSMutableArray *tempSearch = [[NSMutableArray alloc] init];

for (NSDictionary *item in items) {

    if ([[item objectForKey:@"en"] isEqualToString:searchText]) {
        NSLog(@"Found");

        [tempSearch addObject:item];
    }
}

searchArray = [tempSearch copy];
}

它有效,但问题是它仅适用于完整的单词(例如,如果 intextLabelUITableViewCell文本“something”并且我在其中输入“something”,UISearchBar那么我已经返回了这一行,但是当我输入“some”时,我得到了行完整的单词是“some”,“something”没有显示)。我如何用我的方法搜索文本?

4

2 回答 2

1

使用NSPredicate你可以稍微简化你的搜索:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"en BEGINSWITH %@", searchText];
NSArray *tempSearch = [items filteredArrayUsingPredicate:predicate];

如果您想要不区分大小写的搜索,请替换BEGINSWITHBEGINSWITH[c].

有关详细信息,请参阅“谓词编程指南”中的使用谓词

于 2013-01-09T19:53:05.967 回答
0

好的,我有一些东西,但不是 100% 正确。

for (NSDictionary *item in items) {

    NSRange range = [[item objectForKey:@"en"] rangeOfString : searchText];
    if (range.location != NSNotFound) {

        NSLog(@"Found");

        [tempSearch addObject:item];
    }
}

当我输入“e”时,我得到了“some”、“something”、“else”——我认为正确的时候只会返回“else”。

好的,我知道了。

    if (range.location != NSNotFound && range.location == 0) {
于 2013-01-07T23:21:59.797 回答