我的回应就像;
{
Writers : [
{
"name": "Mad Decent Block Party NYC",
"artist": [
{
"artist_name": "Dillon Francis",
"name": "Dillon Francis",
"Books" : ["Book1", "Book2", "Book3"]
},
{
"artist_name": "Major Lazer",
"name": "Major Lazer",
"Books" : ["Book4", "Book5", "Book6"]
},
{
"artist_name": "Flosstradamus ",
"name": "Flosstradamus",
"Books" : ["Book7", "Book8", "Book9"]
}
],
},{
"name": "Kaskade Atmosphere Tour NYC",
"artist": [
{
"artist_name": "Ryan Raddon",
"name": "Kaskade",
"Books" : ["Book1", "Book2", "Book3"]
}
],
},
]
}
我想搜索Artist数组的每个字典上的Books数组。当文本匹配时,结果应该是来自writers数组的dict对象以及匹配的book对象。
例如,我搜索的是Book1,结果应如下所示:
Writers : [
{
"artist": [
{
"artist_name": "Dillon Francis",
"name": "Dillon Francis",
"Books" : ["Book1", "Book2", "Book3"]
},
],
"name": "Mad Decent Block Party NYC",
},{
"artist": [
{
"artist_name": "Ryan Raddon",
"name": "Kaskade",
"Books" : ["Book1", "Book2", "Book3"]
}
],
"name": "Kaskade Atmosphere Tour NYC",
},
]
最佳答案
您只需要为此编写两行代码。您形成一个谓词,并用该谓词过滤writers数组。
您可以在谓词中使用键路径,并检查book数组是否包含给定的书名。
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"ANY artist.Books contains[cd] 'Book1'"];
NSArray *arr = [responseDict[@"Writers"] filteredArrayUsingPredicate:predicate];
这应该工作。
关于ios - NSPredicate多层次响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33119441/