UISearchController - 搜索结果显示不同的记录

Posted

技术标签:

【中文标题】UISearchController - 搜索结果显示不同的记录【英文标题】:UISearchController – Search result show different records 【发布时间】:2019-09-22 08:48:08 【问题描述】:

当我在搜索栏中输入“stefanik”时,结果是一条记录(但外观不同),当我点击它时,是正确的记录,请参见屏幕截图。 我认为问题出在这些方法上,但我找不到问题。

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

    if (self.searchController.active)
    
        return 1;
    
    else
    
        return [[self.fetchedResultsController sections] count];
    


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section


    if (self.searchController.active)
    
        return [self.filteredList count];
    
    else
    
        id <NSFetchedResultsSectionInfo> sectionInfo = [[self.fetchedResultsController sections] objectAtIndex:section];
        return [sectionInfo numberOfObjects];
    


你以前见过这个问题吗? 截图

【问题讨论】:

【参考方案1】:

如果您使用NSFetchedResultsController 应用NSPredicate 来过滤例如记录

if (self.searchController.active) 
    self.fetchedResultsController.fetchRequest.predicate = [NSPredicate predicateWithBlock: ^BOOL(id obj, NSDictionary *bind)
        return [[(Airport *)obj name] rangeOfString:searchText options:NSCaseInsensitiveSearch].location != NSNotFound;
    ];
 else 
    self.fetchedResultsController.fetchRequest.predicate = nil

// reload data

这比在代码中过滤到额外的数组更有效

【讨论】:

您好,谢谢。寻求帮助,我发现了问题,问题出在 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

以上是关于UISearchController - 搜索结果显示不同的记录的主要内容,如果未能解决你的问题,请参考以下文章

UISearchController:即使搜索栏为空也显示结果

使 UISearchController 搜索栏自动激活

UISearchController - 搜索结果显示不同的记录

UISearchController “手动”搜索 UI 故障

UISearchController 搜索栏无法激活

搜索结果为空时 UITableView 中的 UISearchController 崩溃