2010-06-20 19 views
52

में अधिकतम संख्यात्मक मान ढूँढना मेरे पास NSNumbers का NSArray है और सरणी में अधिकतम मान ढूंढना चाहता हूं। क्या ऐसा करने के लिए कोई कार्यक्षमता निर्मित है? मैं आईओएस 4 जीएम का उपयोग कर रहा हूं अगर इससे कोई फर्क पड़ता है।NSArray

उत्तर

176

KVC दृष्टिकोण इस तरह दिखता है:

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

या

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

संख्या के साथ एक NSArray

+1

धन्यवाद, मैं मूल्यफोरकेपैथ का उपयोग करने की कोशिश कर रहा था लेकिन इसका उपयोग नहीं कर रहा था .intValue तो यह काम नहीं कर रहा था। –

+0

क्या होगा अगर एनएसएआरएआरई के कुछ आइटम NSNulls हैं? http://stackoverflow.com/questions/4499109/how-to-tell-nsarray-valueforkeypath-to-ignore-nsnulls – HiveHicks

+14

वास्तव में, '@ "@ max.self" 'का उपयोग करना बेहतर होगा। चूंकि 'अधिकतम' का उपयोग 'तुलना' करता है: ', इसे वास्तविक वस्तुओं की आवश्यकता होती है:' intValue' के साथ, न केवल आप सटीकता खो देते हैं, बल्कि 'valueForKeyPath:' को NSNumbers को फिर से बनाने के लिए पुनर्निर्मित करना है। बोनस के रूप में, यह 'एनएसएसटींग' या कुछ भी जो 'लागू करता है' के साथ काम करता है: '। –

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