SearchBarDisplay过滤,但不显示正确的数据

时间:2013-07-29 20:35:45

标签: ios objective-c uisearchbardisplaycontrol

我正在尝试在我的表视图上实现搜索。我从Core Data填充一个名为myArray的NSMutableArray;然后我用myArray

填充我的表格视图

然后,我有一个名为mySearchArray的NSMutableArray。我用这个数组来显示搜索结果。这是我用于过滤的代码:

-(void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope
{
    [self.mySearchArray removeAllObjects];

    for (MyModel *product in myArray)
    {
        NSComparisonResult result = [product.productName compare:searchText options:(NSCaseInsensitiveSearch|NSDiacriticInsensitiveSearch) range:NSMakeRange(0, [searchText length])];

        if (result == NSOrderedSame)
        [self.mySearchArray addObject:product];
    }
}

问题是搜索无法正常运行。当我搜索某些内容时,我会看到下面的图片。

我做错了什么?

编辑:

过滤正在运行。例如,如果我搜索字母“a”并且只有一个单元格名称具有“a”,则只显示一个单元格。问题是它没有显示带有“a”的单元格。它只显示顶部单元格。

search error

2 个答案:

答案 0 :(得分:1)

请参阅以下链接。它可能会帮助你。这是搜索栏的一个例子。

http://www.appcoda.com/how-to-add-search-bar-uitableview/

答案 1 :(得分:0)

我明白了。问题出在我的表视图实现的cellForRowAtIndexPath:方法中。

我有这段代码:

if (self.tableView == self.searchDisplayController.searchResultsTableView)

当我用self.tableView替换tableView时,它运作得很好。

所以正确的代码是:

if (tableView == self.searchDisplayController.searchResultsTableView)