iPhone SDK - TableSearch - 搜索所有单词而不是仅搜索第一个单词

时间:2009-07-12 16:37:05

标签: iphone

我正在玩Apple的TableSearch示例应用程序。

在他们的应用程序中,他们有一个包含Apple产品的阵列。有一排“iPod touch”。搜索“触摸”时,不显示任何结果。

有人可以帮我把每一行中的所有单词都搜索出来吗?因此,搜索“iPod”时会找到结果,但搜索关键词“touch”时会找到结果。

干杯。

1 个答案:

答案 0 :(得分:14)

以下是MainViewController.m中filterContentForSearchText:scope:方法中的相关代码:

NSComparisonResult result = [product.name compare:searchText options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch) range:NSMakeRange(0, [searchText length])];
if (result == NSOrderedSame)
{
    [self.filteredListContent addObject:product];
}

这将比较前n个字符(由range参数指定),忽略大小写和变音符号,每个字符串包含当前搜索字符串的前n个字符,其中n是当前搜索字符串的长度。

尝试将代码更改为以下内容:

NSRange result = [product.name rangeOfString:searchText options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch)];
if (result.location != NSNotFound)
{
    [self.filteredListContent addObject:product];
}

这将在每个字符串中搜索当前搜索字符串。