2010-06-20 3 views

ответ

176

КВЦ подход выглядит следующим образом:

int max = [[numbers valueForKeyPath:@"@max.intValue"] intValue]; 

или

NSNumber * max = [numbers valueForKeyPath:@"@max.intValue"]; 

с номерами как NSArray

+1

Спасибо, я пытался использовать valueForKeyPath, но не использовал .intValue, чтобы он не работал. –

+0

Что делать, если некоторые элементы NSArray являются NSNulls? http://stackoverflow.com/questions/4499109/how-to-tell-nsarray-valueforkeypath-to-ignore-nsnulls – HiveHicks

+14

На самом деле было бы лучше использовать '@ @ @ max.self''. Поскольку '@ max' использует' compare: ', ему нужны фактические объекты: с' intValue', вы не только теряете точность, но и значение valueForKeyPath: 'необходимо воссоздать NSNumbers для работы. В качестве бонуса он также работает с 'NSString' или чем-либо, что реализует 'compare:'. –

1
NSArray * test= @[@3, @67, @23, @67, @67]; 
int maximumValue = [[test valueForKeyPath: @"@max.self"] intValue]; 
NSLog(@" MaximumValue = %d", maximumValue); 

// Maximum = 67 
0

Надежда будет полезно для вас.

NSArray * arrayOfBarGraphValues = @[@65, @45, @47 ,@87 , @46, @66 ,@77 ,@47 ,@79 ,@78 ,@87 ,@78 ,@87 ]; 
int maxOfBarGraphValues = [[arrayOfBarGraphValues valueForKeyPath: @"@max.self"] intValue]; 
NSLog(@" MaximumValue Of BarGraph = %d", maxOfBarGraphValues); 
Смежные вопросы