我有以下格式的数组
[
{
"xyz" : [Array with different values];
... many more keys
},
{
.. same as above dictionary
}
... many more dictionaries
]
在这里看,我有主要的字典数组,其中每个字典都有不同的键,其中有" xyz" key,其值又是一个数组。现在我想要那些字典,xyz的数组必须计数> 2。
现在我尝试使用以下谓词:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"xyz.count>2"];
NSArray *filteredArray = [resultArray filteredArrayUsingPredicate:predicate];
但是这给了我这样的错误,xyz is not key-value complaint for key "count"
答案 0 :(得分:6)
在这种情况下导致-valueForKey: @"count"
被发送到每个xyz实例,而xyz不是符合计数的键值编码。
相反,当您想要计数然后使用时,使用@count
运算符来评估集合的计数
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"xyz.@count>2"];
而不是
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"xyz.count>2"];
答案 1 :(得分:1)
在Swift 3.0中:
let fileterdArray = resultArray.filtered(using: NSPredicate.init(format: "xyz.@count>%d", 2))