【问题标题】:UISearchController – Search result show different recordsUISearchController - 搜索结果显示不同的记录
【发布时间】: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];
    }

}

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

【问题讨论】:

    标签: objective-c xcode uisearchcontroller


    【解决方案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
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-20
    • 1970-01-01
    • 1970-01-01
    • 2021-01-25
    相关资源
    最近更新 更多