NSMutableArray搜索

时间:2011-12-29 08:56:32

标签: iphone nsmutablearray uisearchbar

我有一个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行崩溃。

3 个答案:

答案 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];