我有一个搜索数据表的 UISearchBar。输入搜索时,结果按如下顺序显示:
开始输入“ch...” 1. Ache 2. Cherry 3. Choice
对我(以及我的应用程序)来说,“Cherry”和“Choice”将位于结果的顶部更有意义,因为输入了“ch”而不是“ach”。这是可以通过编程方式更改的吗,或者这只是 iOS 搜索的工作方式?
我有一个搜索数据表的 UISearchBar。输入搜索时,结果按如下顺序显示:
开始输入“ch...” 1. Ache 2. Cherry 3. Choice
对我(以及我的应用程序)来说,“Cherry”和“Choice”将位于结果的顶部更有意义,因为输入了“ch”而不是“ach”。这是可以通过编程方式更改的吗,或者这只是 iOS 搜索的工作方式?
您必须将搜索选项指定为NSAnchoredSearch
NSRange searchRange = [sortedString rangeOfString:searchText options:NSAnchoredSearch];
下面列出的一些搜索方法
NSCaseInsensitiveSearch
NSLiteralSearch
NSBackwardsSearch
非锚定搜索
NSNumericSearch
NSDiacritic InsensitiveSearch
NSWidthInsensitiveSearch
NSForcedOrderingSearch
NSRegularExpressionSearch
例如:
- (void)search {
NSString *searchText = [searchBar.text lowercaseString];
for (int index = 0; index < [availableCollectionArray count]; index++) {
NSArray *tempArray = [availableCollectionArray objectAtIndex:index];
for (int tempIndex = 0; tempIndex < [tempArray count] ; tempIndex++) {
NSString *sortedString = [tempArray objectAtIndex:tempIndex];
NSRange searchRange = [sortedString rangeOfString:searchText options:NSAnchoredSearch];
if (searchRange.length > 0)
{
[sortedArray addObject: sortedString]; //add the string which starts from searchBar.text
}
}
}
}