3

次のObjective-Cクラスがあります:

@interface GraphDataPoint : NSObject
@property NSDate *date;
@property NSNumber *value;
@end

を指定するNSArrayと、次を使用しGraphDataPointて最大値を計算する方法を知っていますvalue

[data valueForKeyPath:@"@max.value"]

value今、私はの配列に変更したいvalues:

@property NSArray *values;

usingでそれぞれのプロパティの合計の最大値を計算する同様の方法はありますか? (ネストされたループを記述して手動で解決できることは知っています。)valueGraphDataPointNSArrayvalueForKeyPath

4

1 に答える 1

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
于 2014-05-26T17:52:16.413 に答える