-2

我有一个搜索数据表的 UISearchBar。输入搜索时,结果按如下顺序显示:

开始输入“ch...” 1. Ache 2. Cherry 3. Choice

对我(以及我的应用程序)来说,“Cherry”和“Choice”将位于结果的顶部更有意义,因为输入了“ch”而不是“ach”。这是可以通过编程方式更改的吗,或者这只是 iOS 搜索的工作方式?

4

1 回答 1

3

您必须将搜索选项指定为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
            }       

        }   

    }

}
于 2012-07-18T04:17:31.400 回答