有没有一种方法可以构造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
,所以至少可以在谓词中使用集合运算符。