Как найти массив словарей и показать в UITableview?

Я довольно новичок в IOS, и я использую UISearchDisplayController для поиска.

 -(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString { [self filterContentForSearchText:searchString scope:[[self.searchDisplayController.searchBar scopeButtonTitles] objectAtIndex:[self.searchDisplayController.searchBar selectedScopeButtonIndex]]]; return YES; } - (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope { NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY SELF == %@", searchText]; NSArray *filtered = [self.arrProductList filteredArrayUsingPredicate:predicate]; NSLog(@"%@", filtered); } 

И вот мой self.arrProductList – это массив массива, т.е.

     ({
         ID = 1;
         description = "Coalesce Functioning on the нетерпеливость T-Shirt";
         pname = "Coalesce Functioning T-Shirt";
         цена = "299,00";
         qty = 99;
        },
     {
         ID = 2;
         description = "Eater Krylon Bombear Destroyed T-Shirt";
         pname = «Футболка девушки»;
         price = "499,00";
         qty = 99;
     },
     {
         ID = 3;
         description = "The Get-up Kids Band Camp Pullover Hoodie";
         pname = "Band Camp T-Shirt";
         price = "399,00";
         qty = 99;
     })  

Мой вопрос – как искать с помощью ключа «pname» ? Мое приложение разбито

filteredArrayUsingPredicate:

2 Solutions collect form web for “Как найти массив словарей и показать в UITableview?”

Вам нужно изменить свой предикат, чтобы добавить ключ для поиска:

 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"pname == %@", searchText]; 

Дополнительно == самом деле будут искать точные совпадения, т. Е. Если вы войдете в Band Camp T-Shirt качестве поиска, то вы получите результат, вы не сможете получить никакого результата, если просто введите Band или Camp или Shirt , Поэтому для достижения поиска на основе символов вам нужно изменить предикат, чтобы включить ключевое слово include.

 NSPredicate *predicate = [NSPredicate predicateWithFormat:@"pname contains[cd] %@", searchText]; 

[cd] будет соответствовать нечувствительным к регистру.

Мой друг решает эту проблему. Вот код:

 - (void) searchBarDidBeginEditing:(UISearchBar*) lclSearchBar { self.searchBar.showsCancelButton = YES; } #pragma mark - UISearchDisplayController delegate methods -(BOOL)searchDisplayController:(UISearchDisplayController *)controller shouldReloadTableForSearchString:(NSString *)searchString { [self filterContentForSearchText:searchString scope:[[self.searchDisplayController.searchBar scopeButtonTitles] objectAtIndex:[self.searchDisplayController.searchBar selectedScopeButtonIndex]]]; return YES; } - (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope { if (searchResults.count != 0) { [searchResults removeAllObjects]; } for (int i=0; i< [self.arrProductList count]; i++) { NSString *string = [[self.arrProductList objectAtIndex:i] valueForKey:@"pname"]; NSRange rangeValue = [string rangeOfString:searchText options:NSCaseInsensitiveSearch]; if (rangeValue.length > 0) { NSLog(@"string contains bla!"); [searchResults addObject:[self.arrProductList objectAtIndex:i]]; } else { NSLog(@"string does not contain bla"); } } NSLog(@"fiilterArray : %@",searchResults); } 
  • IOS: сохранение состояния кнопки в uitableviewcell
  • когда reloadData () в UITableView
  • Использование делегатов для передачи данных из одного TableView в другое
  • Отключение UITableView из-за теней и границ
  • Кнопка «Назад» не отображается на нажатом UIViewController
  • MapView внутри пользовательского вызова делегата ячейки
  • Когда я устанавливаю rowHeight для UITableView, не следует также изменить высоту ячейки?
  • UITableView с пользовательским пейджинговым поведением
  • Остановить повторное использование пользовательских ячеек Swift
  • Редактирование TextLabel в UITableViewCell
  • избегать просмотра при открытии клавиатуры из UITextView внутри UITableView с пользовательской ячейкой
  • PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.