2017-03-02 60 views
3

的阵列计数我有格式的阵列如下面滤波的方法与NSPredicate,用于内部字典阵列内部阵列

[ 
    { 
     "xyz" : [Array with different values]; 
     ... many more keys    
    }, 
    { 
    .. same as above dictionary 
    } 
    ... many more dictionaries 
] 

这里看到,我有字典,其中每个字典具有不同的密钥的主阵列,其中有是“xyz”键,其值又是一个数组。现在我想要那些xyz的数组必须count> 2的字典。

现在,我已经尝试用以下断言:

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"xyz.count>2"]; 
NSArray *filteredArray = [resultArray filteredArrayUsingPredicate:predicate]; 

但是这是给我错误这样的事情,xyz is not key-value complaint for key "count"

回答

3

在这种情况下导致-valueForKey: @"count"被发送到每个XYZ实例,XYZ不是计数的关键值编码。

相反,使用@count运营商能够评估收集的数量,当你想计数,然后使用

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"[email protected]>2"]; 

,而不是

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"xyz.count>2"]; 
1

在雨燕3.0:

let fileterdArray = resultArray.filtered(using: NSPredicate.init(format: "[email protected]>%d", 2))