如何在iPhone中实现内容搜索?

时间:2011-07-30 15:04:22

标签: iphone objective-c ios search uisearchbar

我正在尝试使用UISearchBar在iPhone中实现内容serch,我的代码如下所示。

- (void)searchBar:(UISearchBar*)searchBar textDidChange:(NSString*)searchText {
    if([tableData count])
        [tableData removeAllObjects];

    //dataArray contains array of strings
         //tableData should containg arrow of strings as a serch result

    NSRange range = {0, [searchText length]};

    for(int i=0; i<[dataArray count]; ++i)
    {
        NSString *name = [dataArray objectAtIndex:i];

        if([name compare:searchText options:NSCaseInsensitiveSearch range:range] == NSOrderedSame)
            [tableData addObject:[dataArray objectAtIndex:i]];
    }
    [theTableView reloadData];
}

我将dataArray作为字符串的来源,然后我想搜索每个字符串中的一些内容,然后我需要在tableData数组中存储包含搜索文本的字符串。

现在写我只得到那些字符串作为搜索结果在起始文本中匹配就好像在dataArray中有3个对象1.印度,2。中国,3。美国和我正在进行搜索“在“然后它应该显示印度和中国两者,但它只显示印度,因为”In“开始印度的内容。

请建议我如何达到要求的结果。

1 个答案:

答案 0 :(得分:1)

要搜索字符串中的任何位置,您需要检查整个字符串,以查看搜索文本是否出现在任何位置:

NSRange titleResultsRange = [name rangeOfString:searchText options:NSCaseInsensitiveSearch];

if (titleResultsRange.length > 0)
    [tableData addObject:name]; // or [tableData addObject:[dataArray objectAtIndex:i]];