0
검색 바를 구현하려고하지만 몇 가지 문제가 있습니다. 내 Tableview의 데이터는 PLIST에서 제공되며 NSMutableArray에 채워집니다. 내 PLIST는 이와 같이 보이며 NSLOG로 배열의 데이터를 볼 수도 있습니다. 이제 tableview에 검색 기능을 제공하여 "name"을 검색 할 수 있고 입력 한 이름에 맞는 모든 항목을 검색 할 수 있습니다. 하지만 내 검색이 모든 "이름"항목을 검색 할 수있게하려면 어떻게해야합니까?사전에서 배열로 검색 막대
업데이트 : 검색 필드에 입력을 시작하면 배열이 비어 있습니다.
- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope
{
NSPredicate *resultPredicate = [NSPredicate
predicateWithFormat:@"name contains[c] %@",
searchText];
NSMutableArray *filtered = [myArray filteredArrayUsingPredicate:resultPredicate];
NSLog(@"%@", filtered);
}
#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;
}
나는 이런 식으로 내있는 tableview에 데이터를 채 웁니다
cell.textLabel.text = [[[[myArray objectAtIndex:indexPath.section]objectForKey:@"Rows"]objectAtIndex:indexPath.row]objectForKey:@"name"];
상관 없음 PLIST는 다음과 같습니다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Hot Drinks</key>
<array>
<dict>
<key>title</key>
<string>COFFEE SPECIALS</string>
<key>Rows</key>
<array>
<dict>
<key>price</key>
<string>3,20 Euro</string>
<key>name</key>
<string>Espresso</string>
<key>link</key>
<string></string>
<key>subname</key>
<string></string>
</dict>
<dict>
<key>price</key>
<string>3,20 euro</string>
<key>name</key>
<string>Ristretto</string>
<key>link</key>
<string></string>
<key>subname</key>
<string>Short & strong espresso</string>
</dict>
<dict>
<key>price</key>
<string>3,50 Euro</string>
<key>name</key>
<string>Espresso Macchiato</string>
<key>link</key>
<string></string>
<key>subname</key>
<string>Espresso with hot milk </string>
</dict>
<dict>
<key>price</key>
<string>4,80 Euro</string>
<key>name</key>
<string>Espresso Doppio</string>
<key>link</key>
<string></string>
<key>subname</key>
<string>Double espresso</string>
</dict>
<dict>
<key>price</key>
<string>3,50 Euro</string>
<key>name</key>
<string>Coffee</string>
<key>link</key>
<string></string>
<key>subname</key>
<string>Freshly brewed regular coffee</string>
</dict>
<dict>
<key>price</key>
<string>4,00 Euro</string>
<key>name</key>
<string>Cappuccino</string>
<key>link</key>
<string></string>
<key>subname</key>
<string>Espresso with hot milk and milk froth</string>
</dict>
<dict>
<key>price</key>
<string>4,50 Euro</string>
<key>name</key>
<string>White Coffee</string>
<key>link</key>
<string></string>
<key>subname</key>
<string>coffee with a lot of hot milk and milk froth</string>
</dict>
<dict>
<key>price</key>
<string>4,50 Euro</string>
<key>name</key>
<string>Latte Macchiato</string>
<key>link</key>
<string></string>
<key>subname</key>
<string>Espresso with a lot of hot milk and milk froth, served in a glass</string>
</dict>
<dict>
<key>price</key>
<string>0,50 Euro</string>
<key>name</key>
<string>Flavours of your choice</string>
<key>link</key>
<string></string>
<key>subname</key>
<string>Chocolate, caramel, white chocolate, hazelnut </string>
</dict>
<dict>
<key>price</key>
<string>6,50 Euro</string>
<key>name</key>
<string>Hot “Valrhona” chocolate</string>
<key>link</key>
<string></string>
<key>subname</key>
<string>Hot “Valrhona” chocolate prepared with milk and cream </string>
</dict>
</array>
</dict>
<dict>
<key>title</key>
<string>TEA SPECIALTIES</string>
<key>Rows</key>
<array>
<dict>
<key>price</key>
<string>5,00 Euro</string>
<key>name</key>
<string>English Breakfast – Ceylon/St. James</string>
<key>link</key>
<string></string>
<key>subname</key>
<string>BLACK TEA</string>
</dict>
<dict>
<key>price</key>
<string>5,00 Euro</string>
<key>name</key>
<string>Darjeeling Summer Gold</string>
<key>link</key>
<string></string>
<key>subname</key>
<string>BLACK TEA</string>
</dict>
<dict>
<key>price</key>
<string>5,00 Euro</string>
<key>name</key>
<string>Classic Chai – Indien</string>
<key>link</key>
<string></string>
<key>subname</key>
<string>BLACK TEA</string>
</dict>
<dict>
<key>price</key>
<string>5,00 Euro</string>
<key>name</key>
<string>Assam Barie</string>
<key>link</key>
<string></string>
<key>subname</key>
<string>BLACK TEA</string>
</dict>
<dict>
<key>price</key>
<string>5,00 Euro</string>
<key>name</key>
<string>Earl Grey (Darjeeling)</string>
<key>link</key>
<string></string>
<key>subname</key>
<string>FLAVOURED BLACK TEA</string>
</dict>
<dict>
<key>price</key>
<string>5,00 Euro</string>
<key>name</key>
<string>Dung Ti Oolong – China</string>
<key>link</key>
<string></string>
<key>subname</key>
<string>OOLONG TEA</string>
</dict>
<dict>
<key>price</key>
<string>5,00 Euro</string>
<key>name</key>
<string>Green Dragon</string>
<key>link</key>
<string></string>
<key>subname</key>
<string>GREEN TEA</string>
</dict>
<dict>
<key>price</key>
<string>5,00 Euro</string>
<key>name</key>
<string>Grüner Tee Morgentau</string>
<key>link</key>
<string></string>
<key>subname</key>
<string>FLAVOURED GREEN TEA</string>
</dict>
<dict>
<key>price</key>
<string>5,00 Euro</string>
<key>name</key>
<string>Jasmin Gold</string>
<key>link</key>
<string></string>
<key>subname</key>
<string>FLAVOURED GREEN TEA</string>
</dict>
<dict>
<key>price</key>
<string>5,00 Euro</string>
<key>name</key>
<string>Pai Mu Tan Silver Typ</string>
<key>link</key>
<string></string>
<key>subname</key>
<string>WHITE TEA</string>
</dict>
<dict>
<key>price</key>
<string>5,00 Euro</string>
<key>name</key>
<string>Get the Power</string>
<key>link</key>
<string></string>
<key>subname</key>
<string>FLAVOURED FRUIT INFUSION</string>
</dict>
<dict>
<key>price</key>
<string>5,00 Euro</string>
<key>name</key>
<string>Red Fruit</string>
<key>link</key>
<string></string>
<key>subname</key>
<string>FLAVOURED FRUIT INFUSION</string>
</dict>
<dict>
<key>price</key>
<string>5,00 Euro</string>
<key>name</key>
<string>Herbs and Ginger</string>
<key>link</key>
<string></string>
<key>subname</key>
<string>HERBAL INFUSION</string>
</dict>
<dict>
<key>price</key>
<string>5,00 Euro</string>
<key>name</key>
<string>Original Roibosh</string>
<key>link</key>
<string></string>
<key>subname</key>
<string>HERBAL INFUSION</string>
</dict>
<dict>
<key>price</key>
<string>5,00 Euro</string>
<key>name</key>
<string>Verbena</string>
<key>link</key>
<string></string>
<key>subname</key>
<string>HERBAL INFUSION</string>
</dict>
<dict>
<key>price</key>
<string>5,00 Euro</string>
<key>name</key>
<string>Fruity Camomile</string>
<key>link</key>
<string></string>
<key>subname</key>
<string>HERBAL INFUSION</string>
</dict>
<dict>
<key>price</key>
<string>5,00 Euro</string>
<key>name</key>
<string>Mint & Fresh</string>
<key>link</key>
<string></string>
<key>subname</key>
<string>HERBAL INFUSION</string>
</dict>
<dict>
<key>price</key>
<string>5,00 Euro</string>
<key>name</key>
<string>Equilibrium</string>
<key>link</key>
<string></string>
<key>subname</key>
<string>FLAVOURED HERBAL INFUSION</string>
</dict>
<dict>
<key>price</key>
<string>5,00 Euro</string>
<key>name</key>
<string>Fruits of Paradise</string>
<key>link</key>
<string></string>
<key>subname</key>
<string>FLAVOURED HERBAL INFUSION</string>
</dict>
</array>
</dict>
</array>
</dict>
</plist>
것은 위의 내 업데이 트를 참조하십시오. 내 배열은 비어 있습니다. – halloway4b
답변을 업데이트했습니다. –
아주 잘 작동합니다. 많은 감사합니다. 결과가 올바르게 표시됩니다. 검색 결과에 셀의 detailtext도 표시 할 수 있습니까? 이 방법을 사용하여 하위 이름의 이름을 표시합니다. if (tableView == self.searchDisplayController.searchResultsTableView) { cell.textLabel.text = [[filtersArray objectAtIndex : indexPath.row] objectForKey : @ "name"] ; cell.detailTextLabel.text = [[filteredArray objectAtIndex : indexPath.row] objectForKey : @ "subname"]; NSLog (@ "% @", [[필터링 된 objectAtIndex : indexPath.row] objectForKey : @ "하위 이름"]); } – halloway4b