ios - 聚合函数如何处理 Core Data 中的一对多关系

标签 ios objective-c core-data

我有一个 NSManagedObject Organization,它与 NSManagedObject Employee 有一对多的关系。

//to-many relationship from Organisation to Employee
@property (nonatomic, retain) NSSet *employees; 

//Employee has a property named age of type NSNumber
@property (nonatomic, retain) NSNumber *age; 

以下代码行给出组织内的最大年龄:

NSNumber *maxAge = [organisation.employees valueForKeyPath:@"@max.age"];

我需要了解 valueForKeyPath:@"@max.age" 是如何找到最大年龄的。

我不确定@max是NSSet还是Core Data自己提供的。

最佳答案

这归功于称为键值编码的功能。具体来说,@max 是一个“集合运算符”。其他示例是@sum、@avg、@count。 CoreData 支持 KVC,但 NSArrayNSSet 等其他集合也支持 KVC。 Apple 文档 here解释:

“集合运算符是作为参数传递给 valueForKeyPath: 方法的专用键路径。运算符由前面带有 @ 符号 (@) 的字符串指定。集合运算符左侧的键路径,如果存在,则确定操作中使用的相对于接收器的数组或集合。运算符右侧的键路径指定运算符使用的集合的属性。”

关于ios - 聚合函数如何处理 Core Data 中的一对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27545704/

相关文章:

ios - Swift 3 中的 CGRectGetMidX/Y 在哪里

ios - 我怎样才能在 iOS 5 中使用 CMDeviceMotion 获取设备的标题

iphone - 有没有人有在 iPhone 应用程序中播放 ASF 流的解决方案?

ios - 带有多个参数选择器的 UIbutton?

ios - 找不到 CoreData+MagicalRecord.h 文件

ios - NSString 去掉括号

iOS异步功能不按顺序

ios - 运行 iOS 8.2 的 ipad 中不显示相机

swift - 在 Swift 中编写自定义访问器方法

swift - 如何从核心数据中的单个字段获得不同的结果(Swift 4)