如何根据JSON中的另一个字典键过滤字典值?

时间:2016-01-05 15:00:51

标签: ios objective-c json uisearchcontroller

我有一个带有UISearchController的表来搜索它。第一个表是从JSON填充的,格式为:

{
    "items":
        [
            {
                "title":"title1",
                "url":"url1",
            },

            {
                "title":"title2",
                "url":"url2",
            }
        ]
}

"标题"显示为单元格的textLabel,url是单击单元格时打开的链接。

当我在搜索栏中搜索时,结果表显示由符合搜索条件的标题填充。我的问题是这些不包括网址,所以点击这些单元格时没有任何反应。我的搜索条件如下:

- (void)updateSearchResultsForSearchController:(UISearchController *)searchController {

    // filter the search results
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF contains [cd] %@", self.searchController.searchBar.text];
    self.results = [[self.JSONarray valueForKey:@"title"] filteredArrayUsingPredicate:predicate];
    [self.tableView reloadData];

}

我可以看到我认为的问题,但无法弄清楚如何解决它。搜索时只搜索标题并使用这些标题填充结果数组,但我需要根据相应的标题过滤网址。

任何帮助都会非常感激。

1 个答案:

答案 0 :(得分:0)

由于我没有提供您的所有代码,因此我无法在脑海中输入此内容,但请尝试以下操作:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"title contains [cd] %@", self.searchController.searchBar.text];
self.results = [self.JSONarray filteredArrayUsingPredicate:predicate];

不同之处在于我们不首先过滤JSON数组的title元素;相反,我们正在搜索整个数组,并在谓词中使用title

执行此操作后,self.results应为NSArray NSDictionary个,每个title包含url.vimrc元素。因此,您可以根据需要访问网址以检索结果。