ios - NSPredicate 使用 nsstring 过滤完整的 NSArray 字符串

标签 ios objective-c nsdictionary nspredicate

我需要过滤一个多嵌套的 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];

你可以看到更多关于谓词数组或字典的语法,你可以从下面的链接中学到很多东西:

https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/Predicates/Articles/pSyntax.html#//apple_ref/doc/uid/TP40001795-SW1

编码愉快!

关于ios - NSPredicate 使用 nsstring 过滤完整的 NSArray 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33819014/

相关文章:

ios - 从NSDictionary填充NSArray

ios - Cocoa/Objective-C - 验证 NSDictionary 上是否存在键

ios - 上传到 firebase 的视频长度为 0 秒?

ios - MapKit - Swift 示例

ios - 如何使用 MPVolumeView 来更改音频输出设备。喜欢 WhatsApp 和视频群聊

c++ - Objective-C 是否存在 C+ +'s "const 方法的近似值?

objective-c - 确定窗口是否被拖动

ios - UIBezierPath 圆边?

objective-c - Apple watchkit 应用程序显示错误 "The operation couldn' t 已完成。 (LaunchServicesError 错误 0。)”

ios - 将 NSDictionary 对象转换为 NSData 对象,反之亦然