0

在我的 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_对于每个正数,我基本上需要在级别上搜索数组。

4

1 回答 1

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结果。

于 2013-10-30T19:57:38.617 回答