我正在使用NSComparisonResult和我的SearchController:
for (Annotation *ano in listContent) {
NSComparisonResult result = [ano.title compare:searchText options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch) range:NSMakeRange(0, [searchText length])];
if (result == NSOrderedSame) {
[self.filteredListContent addObject:ano];
}
}
如果我搜索一个字符串,它只会找到以该字符串开头的结果。
记录是“我的画廊”
搜索“我的美术馆”< --- 结果
搜索“我的”< ---找到
搜索“艺术”< ---未找到
搜索“图库”< ---未找到
如何更改我的代码,以便我可以找到上面显示的部分字符串?
答案 0 :(得分:12)
我最终使用了NSRange,它允许我基本上搜索子字符串:
for (Annotation *ano in listContent) {
NSRange range = [ano.title rangeOfString:searchText options:NSCaseInsensitiveSearch];
if (range.location != NSNotFound) {
[self.filteredListContent addObject:ano];
}
}
答案 1 :(得分:6)
有一种直接的方法可以进行子字符串检查:
NSComparisonResult result1 = [dummyString compare:searchText options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch) range:[dummyString rangeOfString:searchText options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch)]];
if (result1 == NSOrderedSame)
{
[self.filteredListContent addObject:dummyString]; // this can vary drastically
}
注意:我使用的是UISearchDisplayController
,这对我来说非常合适。
希望将来能帮到你。
感谢this post(更新:此链接不再有效。)