UISearchController - Результаты поиска показывают разные записи - PullRequest
0 голосов
/ 22 сентября 2019

Когда я набираю «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];
    }

}

Вы видели эту проблему раньше?Скриншоты

enter image description here

enter image description here

1 Ответ

1 голос
/ 22 сентября 2019

Если вы используете 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

Это более эффективно, чем фильтрация кода в дополнительный массив

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...