2009-07-12 46 views
4

我正在使用Apple的TableSearch示例应用程序。iPhone SDK - TableSearch - 搜索所有单词而不仅仅是第一个

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

有人可以帮我做出每行可搜索的所有单词吗?因此,搜索“iPod”时可以找到结果,但也可以找到关键字“touch”。

干杯。

回答

14

下面是在filterContentForSearchText:scope:方法相关的代码在MainViewController.m:

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

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

尝试改变代码如下:

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

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

+0

非常感谢。这很好用! 现在它在字符串内搜索,所以在上面的例子中,即使使用“ouch”作为关键字,它也能找到“iPod touch”。但这对我来说不是一个大问题。 – nicoko 2009-07-12 19:35:56

相关问题