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

时间:2014-12-18 11:38:13

标签: ios objective-c core-data

我有一个NSManagedObject组织,它与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"如何找到最大年龄。

我不确定NSSet或Core Data本身是否提供@max

1 个答案:

答案 0 :(得分:2)

这取决于称为键值编码的功能。特别是@max是一个"集合运算符"。其他例子是@sum,@ avg,@ count。 CoreData支持KVC,但NSArrayNSSet等其他集合也支持KVC。 Apple文档here解释:

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