Nano Hash - криптовалюты, майнинг, программирование

Результаты поиска не видны

У меня есть табличное представление с контроллером отображения поиска. Когда я ввожу поиск, журнал показывает мне, что поиск работает и правильно фильтрует, однако на экране отображается только «Нет результатов». Я использую Core Data, если это имеет значение.

 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
if (tableView == self.searchDisplayController.searchResultsTableView) {
    return [searchResults count];
}
else{
    return[[self.fetchedResultsController sections]count];
}
}



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

id <NSFetchedResultsSectionInfo> secInfo = [[self.fetchedResultsController sections]objectAtIndex:section];\
return [secInfo numberOfObjects];

}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
UITableViewCell *cell;
static NSString *CellIdentifier = @"Cell";

if (tableView != self.tableView) {
    NSLog(@"Found searchDisplayController");
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
} else {
    cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath];
    NSLog(@"Found regular table View");
}

    // Configure the cell...
    Instance *instance = [self.fetchedResultsController objectAtIndexPath:indexPath];


    if (tableView == self.searchDisplayController.searchResultsTableView) {
    cell.textLabel.text = [searchResults objectAtIndex:indexPath.row];
    } else {
    cell.textLabel.text = instance.name;
    }

Вот NumberOfRowsInSection и Number:

 - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
 {
     if (tableView == self.searchDisplayController.searchResultsTableView) {
    return [searchResults count];
}
     else{
    return[[self.fetchedResultsController sections]count];
}
}
 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
 {
     id <NSFetchedResultsSectionInfo> secInfo = [[self.fetchedResultsController sections]objectAtIndex:section];\
     return [secInfo numberOfObjects];
 }

  • где вы обновляете содержимое ячейки? 07.09.2013
  • Чуть ниже: Экземпляр *instance = [self.fetchedResultsController objectAtIndexPath:indexPath]; //дополнительные данные поиска if (tableView == self.searchDisplayController.searchResultsTableView) { cell.textLabel.text = [searchResults objectAtIndex:indexPath.row]; } еще { cell.textLabel.text = instance.name; } 07.09.2013
  • @Isaac: Можете ли вы добавить этот код к своему вопросу? Это облегчает чтение. - Также были бы полезны методы numberOfSections и numberOfRowsInSection. 07.09.2013
  • Вы смотрели на логику, которая представляет сообщение «Нет результатов», и возвращались оттуда, чтобы понять, почему она считает, что результатов нет? 07.09.2013
  • (Форматирование было бы неплохо.) 07.09.2013

Ответы:


1

Проверьте свою реализацию numberOfSectionsInTableView и numberOfRowsInSection.
В первом случае вы должны вернуть 1, если это представление таблицы поиска (1 раздел).
В numberOfRowsInSection вы также должны проверить заданный аргумент tableView, как вы сделали в numberOfSectionsInTableView, и вернуть [searchResults count].

07.09.2013

2

Разве ваша реализация не должна быть чем-то вроде: -

- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
 {
     if (tableView == self.searchDisplayController.searchResultsTableView) 
     {
       return 1;
     }
     else
     {
       return[[self.fetchedResultsController sections]count];
     }
}
 - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
 {
    if(tableView == self.searchDisplayController.searchResultsTableView)
    {
      return [searchResults count];
    }
     id <NSFetchedResultsSectionInfo> secInfo = [[self.fetchedResultsController sections]objectAtIndex:section];\
     return [secInfo numberOfObjects];
 }

Если количество результатов поиска велико, я бы предложил использовать другой Fetched Results Controller вместо массива.

08.09.2013
  • Спасибо за это. Я реализовал его и вставил операторы журнала, чтобы увидеть, как работает код. Все было просмотрено, и в журнале я вижу, что поиск точно фильтрует мой поиск, но на дисплее все еще отображается «Нет результатов». Любые другие места, которые я должен искать? 08.09.2013
  • Если вы видите физическое сообщение «Нет результатов», существует ли какой-либо код, который выводит это сообщение? 08.09.2013
  • Я так не думаю. В разделе CellForRowAtIndexPath я определил, что должно заполнять ячейку, если tableView == self.searchResultsController.searchResultsTableView. Разве это не должно настраивать ячейки результатов поиска? 09.09.2013
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..