Хорошо, после долгих поисков, колебаний и дальнейших поисков я просто не могу понять это.
У меня есть SearchDisplayController, и у меня есть четыре разных массива, в которых я ищу с помощью NSPredicate, потому что каждая UITableViewCell состоит из 4 строк (название, описание и т. д.).
Теперь у меня есть 4 поисковых массива, search_title, search_description и т. д., которые заполнены следующим образом:
- (void)filterContentForSearchText:(NSString*)searchText
scope:(NSString*)scope
{
NSPredicate *resultPredicate = [NSPredicate
predicateWithFormat:@"SELF contains[cd] %@",
searchText];
self.search_category = [self.temp_category filteredArrayUsingPredicate:resultPredicate];
self.search_producttitle = [self.price_producttitle filteredArrayUsingPredicate:resultPredicate];
self.search_type = [self.price_type filteredArrayUsingPredicate:resultPredicate];
self.search_description = [self.price_description filteredArrayUsingPredicate:resultPredicate];
Когда я использую NSLog (количество массивов), я вижу, что он работает, потому что он дает правильное количество каждого массива, когда я ввожу поисковый запрос.
Моя ячейка tableview выглядит так:
if ([tableView isEqual:self.searchDisplayController.searchResultsTableView]){
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.nameLabel.text = [self.search_producttitle objectAtIndex:[[searchResults objectAtIndex:indexPath.row] integerValue]];
cell.priceLabel.text = [self.search_price objectAtIndex:[[searchResults objectAtIndex:indexPath.row] integerValue]];
cell.descrLabel.text = [self.search_description objectAtIndex:[[searchResults objectAtIndex:indexPath.row] integerValue]];
cell.IDLabel.text = [self.search_type objectAtIndex:[[searchResults objectAtIndex:indexPath.row] integerValue]];
}
else{
cell.selectionStyle = UITableViewCellSelectionStyleNone;
cell.nameLabel.text = [price_producttitle objectAtIndex:indexPath.row];
cell.IDLabel.text = [price_type objectAtIndex:indexPath.row];
cell.priceLabel.text = [price objectAtIndex:indexPath.row];
cell.descrLabel.text = [price_description objectAtIndex:indexPath.row];
Может быть, вы уже видите, что я пытаюсь сделать. Сейчас я создаю новые массивы из старых массивов, которые я называю поисковыми массивами. Однако эти массивы независимы друг от друга (один массив может быть пустым, а другой заполнен результатами исследований). Мне нужно знать, из какого индекса данные хранятся в этих поисковых массивах. Если я знаю, что данные в search_producttitle поступают из индексов 1,3 и 4 из price_producttitle (исходный массив), то я могу использовать эти числа для отображения indexPath.row. По крайней мере, это мой план на данный момент — создать массив searchResult, содержащий числа, которые следует использовать в objectAtIndex при создании ячейки.
Я борюсь с этим, я не могу найти примеров, когда они ищут в нескольких массивах, потому что ячейки состоят из нескольких массивов.
Может ли кто-нибудь дать мне подсказку в хорошем направлении или примеры, которые я могу использовать?
Заранее спасибо.
Прастоув
Ссылки, которые я использовал: