2010-06-20 37 views
52

我有一個NSArray的NSNumbers,並希望找到數組中的最大值。有沒有內置的功能可以做到這一點?如果這有什麼不同,我正在使用iOS4 GM。NSArray中找到最大數值

回答

176

的KVC的方法是這樣的:

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

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

以數字作爲一個NSArray

+1

謝謝,我試圖使用valueForKeyPath但沒有使用.intValue所以它不工作。 – 2010-06-20 20:11:26

+0

如果某些NSArray的項目是NSNull,該怎麼辦? http://stackoverflow.com/questions/4499109/how-to-tell-nsarray-valueforkeypath-to-ignore-nsnulls – HiveHicks 2010-12-21 13:31:49

+14

事實上,使用'@「@ max.self」'會更好。 由於'@ max'使用'compare:',它需要實際的對象:'intValue',不僅會失去精度,而且'valueForKeyPath:'必須重新創建NSNumbers才能使用。 作爲獎勵,它也適用於'NSString'或任何實現'compare:'的東西。 – 2012-11-23 07:49:54

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);