NSMutableArray 搜索

发布于 2024-12-23 05:04:01 字数 435 浏览 3 评论 0原文

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

I have a UISearchBar and I am performing a search on an array and displaying result. The search works perfect for the first letter but the application crashes when I add a letter in search or even when I press backspace. Here is the code I am using:

for (NSString *sTemp in arrCatSearch)
    {
        NSRange titleResultsRange = [sTemp rangeOfString:strSearch options:NSCaseInsensitiveSearch];

        if (titleResultsRange.length > 0)
            [searchArray addObject:[catalog.catalogItems objectAtIndex:i]];
        i++;
    }  

The application crashes in the NSRange line.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

夜夜流光相皎洁 2024-12-30 05:04:01

我正在使用 NSRange ,例如:

NSRange result = [searchString rangeOfString:searchBar.text options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch)];

在搜索栏的委托方法中

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText

I am using NSRange like :

NSRange result = [searchString rangeOfString:searchBar.text options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch)];

in search bar's delegate methods

- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar
- (void)searchBar:(UISearchBar *)searchBar textDidChange:(NSString *)searchText
送你一个梦 2024-12-30 05:04:01

在数组中搜索结果应该使用 NSPredicate 类来完成:

        NSPredicate *filterPredicate = [NSPredicate predicateWithFormat:@"SELF beginswith[c] %@",searchBar.text];

    //filter array based on the predicate
   searchArray = [arrCatSearch filteredArrayUsingPredicate:filterPredicate];

Searching an array for results should be done with the NSPredicate class:

        NSPredicate *filterPredicate = [NSPredicate predicateWithFormat:@"SELF beginswith[c] %@",searchBar.text];

    //filter array based on the predicate
   searchArray = [arrCatSearch filteredArrayUsingPredicate:filterPredicate];
一口甜 2024-12-30 05:04:01

我认为这应该会给你一个更好的结果。

if ([sTemp rangeOfString: strSearch options: NSCaseInsensitiveSearch].location != NSNotFound)
{
    if (![searchArray containsObject: [catalog.catalogItems objectAtIndex: i]])
    {
        [searchArray addObject: [catalog.catalogItems objectAtIndex: i]];
    }
}

I think this should give you a better result.

if ([sTemp rangeOfString: strSearch options: NSCaseInsensitiveSearch].location != NSNotFound)
{
    if (![searchArray containsObject: [catalog.catalogItems objectAtIndex: i]])
    {
        [searchArray addObject: [catalog.catalogItems objectAtIndex: i]];
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文