我需要过滤一个多嵌套的 json,它基本上是一个包含键值的字典数组,也是数组
这是一个例子
{//Upper structure, an nsaaray of responses
Items = (
{
descriptionRating = "some";
category = 20;
}
);
dynamicVales = (
{
text = "name";
value = "falafel";
type = 3;
},
{
text = "name";
value = (
turkeysandwich,
burger,
snickers
);
type = 2;
},
{
text = "name";
value = "whatever";
type = 2;
},
);
},
所以我有一个 nsarray 的响应,每个响应都有一个 nsarray 的 nsdictionaries 在这种情况下称为“dynamicVales”,它可以包含一个字符串或一个字符串数组,我需要过滤所有响应,其中 dynamicVales =一个字符串我有一个值。该字符串等于数组
NSString *selectedString = @"turkeysandwich, burger, snickers";
我试过了
[filteredresponses = self.responses filteredArrayUsingPredicate:[NSString
stringWithFormat:@"dynamicVales.value CONTAINS '%@'", selectedString];
显然这是行不通的,有没有一种方法可以在一个谓词中执行此操作,而不是在这些内部数组上循环?
value = (
turkeysandwich,
burger,
snickers
);
所以总而言之,我需要过滤字符串的全部内容等于 NSArray 中值的所有内容。
最佳答案
对于您的问题,请尝试以下代码。
NSString *predicateString = [NSString stringWithFormat:@"ANY dynamicVales.value == 'chicken'"];
NSPredicate *predicate = [NSPredicate predicateWithFormat:predicateString];
NSArray *filteredResults = [Mainarray filteredArrayUsingPredicate:predicate];
你可以看到更多关于谓词数组或字典的语法,你可以从下面的链接中学到很多东西:
编码愉快!
关于ios - NSPredicate 使用 nsstring 过滤完整的 NSArray 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33819014/