我有一个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
。
答案 0 :(得分:2)
这取决于称为键值编码的功能。特别是@max是一个"集合运算符"。其他例子是@sum,@ avg,@ count。 CoreData支持KVC,但NSArray
和NSSet
等其他集合也支持KVC。 Apple文档here解释:
"集合运算符是作为参数传递给valueForKeyPath:方法的专用键路径。运算符由前面带有at符号(@)的字符串指定。集合运算符左侧的键路径(如果存在)确定操作中使用的相对于接收器的数组或集合。运算符右侧的关键路径指定运算符使用的集合的属性。"