2013-05-03 66 views
1

有没有一种方法可以构造NSPredicate,以便下面的数组可以通过大于5的平均分数进行过滤?带有@avg集合运算符的NSPredicate的格式字符串

NSArray *objs = @[ 
@{@"scores":@[@3, @5, @2]}, 
@{@"scores":@[@5, @2, @8, @9]}, 
@{@"scores":@[@7, @1, @4]} 
]; 

我曾尝试过各种组合,其中这一个似乎是最有希望的(考虑到@avg.self工作,以获得数的平均值在通过正常KVC阵列的关键路径):

NSPredicate *pred = [NSPredicate predicateWithFormat:@"[email protected] > 5"]; 
NSArray  *filterd = [objs filteredArrayUsingPredicate:pred]; 

运行时错误我得到的是以下几点:

NSUnknownKeyException“原因:” [< __NSArrayI 0x10011b7c0> valueForUndefinedKey:]:此类不是密钥值编码兼容的关键魅力。

此谓词字符串的工作原理:[email protected] > 3,所以至少可以在谓词中使用集合运算符。

回答