cocoa - 使用 @avg 集合运算符格式化 NSPredicate 的字符串

标签 cocoa nspredicate kvc

有没有办法构造一个 NSPredicate,以便可以通过大于 5 的平均分数来过滤以下数组?

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

我尝试了各种组合,其中这个似乎是最有希望的(考虑到关键路径@avg.self可以通过正常的KVC获取数组中数字的平均值):

NSPredicate *pred = [NSPredicate predicateWithFormat:@"scores.@avg.self > 5"];
NSArray     *filterd = [objs filteredArrayUsingPredicate:pred];

我得到的运行时错误如下:

NSUnknownKeyException',原因:'[<__NSArrayI 0x10011b7c0> valueForUndefinedKey:]:此类的键平均值不符合键值编码。

此谓词字符串有效:scores.@count > 3,因此至少可以在谓词中使用该集合运算符。

最佳答案

如果将 scores.@avg.self > 5 更改为 scores.@avg.doubleValue > 5 它将正常工作。

关于cocoa - 使用 @avg 集合运算符格式化 NSPredicate 的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16359155/

相关文章:

arrays - iOS 结构可编码和过滤器?

iphone - KVC 与快速枚举

objective-c - 如何将 NSWindow 对齐到网格

objective-c - 有没有更好的方法从其 subview 访问文档?

ios - NSPredicate 按时间间隔获取日期

ios - 如何将所有相关的自相关对象放在带有每个关系映射的关联节标题的表格 View 中?

cocoa - 观察 NSMutableArray - 仅使用数组访问器

objective-c - ios,KVC,为什么当我调用 [[MyObject valueForKey :"MyArray"] count] 时它不调用 countOf<Key>

objective-c - 在 Setter 中保留计数和复制?

cocoa - Appkit/Quartz/CG 在自定义 View 中正确嵌套 NSTextView