在我的iOS应用程序中,我拉入JSON,并将其设置为数组。该数组如下所示:
links = {
"link_1" = {
clicks = 1;
ip = "10.0.0.0";
shorturl = "http://on.example.com/abc";
timestamp = "2013-10-30 05:56:51";
title = Example Website;
url = "http://example.com/page/1/path/";
};
"link_2" = {
clicks = 10;
ip = "10.0.0.0";
shorturl = "http://on.example.com/def";
timestamp = "2013-10-16 16:55:47";
title = "Fitbit Force Is the Smartest Fitness Tracker Yet [REVIEW]";
url = "http://mashable.com/2013/10/16/fitbit-force-review/";
};
我设置了以下方法来过滤UITableView
结果:
- (void)filterContentForSearchText:(NSString*)searchText scope:(NSString*)scope
{
NSPredicate *resultPredicate = [NSPredicate
predicateWithFormat:@"links.link_1.title contains[cd] %@",
searchText];
searchResults = [filterArray filteredArrayUsingPredicate:resultPredicate];
}
我需要更新predicateWithFormat
过滤器以考虑link_1
,link_2
,link_3
,...
问题:如何让过滤器匹配我的数组的任何“级别”,其中link_
之后的字符串始终为正数,但可以是无穷多个数字?
我基本上需要在link_
级别搜索每个正数的数组。
答案 0 :(得分:1)
它不是数组,links
是字典。因此,只需使用格式为links.allValues
的谓词过滤@"title contains[cd] %@"
。
==编辑==
如果我理解正确,您需要过滤链接对象:
NSArray *linksArray = [[filterArray[0] objectForKey:@"links"] allValues];
NSPredicate *resultPredicate = [NSPredicate
predicateWithFormat:@"title contains[cd] %@", searchText];
NSArray *filteredLinks = [linksArray filteredArrayUsingPredicate:resultPredicate];
然后以您需要的形式形成searchResults
,也许只是传递filteredLinks
。