我有以下Objective-C类:
@interface GraphDataPoint : NSObject
@property NSDate *date;
@property NSNumber *value;
@end
鉴于NSArray
GraphDataPoint
,我知道如何使用
value
[data valueForKeyPath:@"@max.value"]
现在我想将value
更改为values
:
@property NSArray *values;
使用value
计算GraphDataPoint
中每个NSArray
valueForKeyPath
属性的总和的最大值是否有类似方法? ? (我知道我可以编写一个嵌套循环来手动完成它。)
答案 0 :(得分:3)
你应该能够这样做:
NSArray *a = @[
[[GraphDataPoint alloc] initWithVal:@[@1, @2, @3]] // Sum=6
, [[GraphDataPoint alloc] initWithVal:@[@4, @1, @1]] // Sum=6
, [[GraphDataPoint alloc] initWithVal:@[@5, @4, @7]] // Sum=16
, [[GraphDataPoint alloc] initWithVal:@[@6, @8, @9]] // Sum=23 <<== Max
, [[GraphDataPoint alloc] initWithVal:@[@7, @6, @2]] // Sum=15
];
NSNumber *res = [a valueForKeyPath:@"@max.value.@sum.intValue"];
NSLog(@"Res: %@", res); // This prints 23