我有一个UISearchBar,我正在对一个数组执行搜索并显示结果。搜索对于第一个字母非常适合,但是当我在搜索中添加字母或者甚至在按退格键时,应用程序崩溃了。这是我正在使用的代码:
for (NSString *sTemp in arrCatSearch)
{
NSRange titleResultsRange = [sTemp rangeOfString:strSearch options:NSCaseInsensitiveSearch];
if (titleResultsRange.length > 0)
[searchArray addObject:[catalog.catalogItems objectAtIndex:i]];
i++;
}
应用程序在NSRange行崩溃。
答案 0 :(得分:0)
我使用的是NSRange
:
NSRange result = [searchString rangeOfString:searchBar.text options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch)];
搜索栏中的委托方法
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
答案 1 :(得分:0)
我认为这应该会给你一个更好的结果。
if ([sTemp rangeOfString: strSearch options: NSCaseInsensitiveSearch].location != NSNotFound)
{
if (![searchArray containsObject: [catalog.catalogItems objectAtIndex: i]])
{
[searchArray addObject: [catalog.catalogItems objectAtIndex: i]];
}
}
答案 2 :(得分:0)
应使用NSPredicate类搜索数组中的结果:
NSPredicate *filterPredicate = [NSPredicate predicateWithFormat:@"SELF beginswith[c] %@",searchBar.text];
//filter array based on the predicate
searchArray = [arrCatSearch filteredArrayUsingPredicate:filterPredicate];