2012-07-17 16 views
7

शब्दकोशों के साथ एनएसएआरएआरई से आपको सबसे बड़ा मूल्य कैसे मिलता है?शब्दकोश युक्त एनएसएआरएआरई से सबसे बड़ा मूल्य कैसे प्राप्त करें?

आइए कहें कि मेरे पास एनएसएआरएआरई है जिसमें कुंजी "आयु", "नाम" आदि शामिल हैं। अब मैं उच्चतम उम्र के साथ रिकॉर्ड प्राप्त करना चाहता हूं। क्या यह कुछ केवीसी जादू के साथ संभव है? या क्या मुझे इसे "मैनुअल" तरीके से फिर से करना है और करना है?

मैं इस के समान कुछ के साथ की कोशिश की है:

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

यदि आप @ उम्र ... उपयोग max.age – waheeda

+1

मनुष्य का सबसे बड़ा मान की जरूरत है, मैं कभी कभी इच्छा हम की तरह [LINQ] कुछ था (http://en.wikipedia.org/wiki/Language_Integrated_Query) में कोको .... – Jay

उत्तर

14

पर इस कोड का उपयोग करना चाहता है जब तक "intValue" आपके शब्दकोश में एक कुंजी नहीं है, तो महत्वपूर्ण पथ बहुत अच्छा नहीं करेगा।

यदि यह अधिकतम आयु है तो आपको इसे प्राप्त करने के लिए @"@max.age" (शब्दकोश पर) का उपयोग करना चाहिए। आपके शब्दकोश में किसी अन्य कुंजी के लिए भी यही है।

[myDictionary valueForKeyPath:@"@max.age"]; 

तो numbers मूल्यों की एक सरणी आप कुंजी पथ के रूप में @"@max.self" का उपयोग सबसे बड़ा मूल्य प्राप्त करने के सकता है।

[myArrayOfNumbers valueForKeyPath:@"@max.self"]; 
+1

वारंट के स्वीकृत उत्तर से काफी अलग है, मैं अपने एनएसएमयूटेबलएरे (जिसमें सभी एनएसएनंबर ऑब्जेक्ट्स शामिल हैं) से अधिकतम तत्व प्राप्त करने के लिए अपनी दूसरी लाइन का उपयोग कर रहा हूं और मुझे यह त्रुटि मिलती है: *** बिना किसी अपवाद 'NSUnknownKeyException' के कारण ऐप को समाप्त करना, कारण: '[<__ एनएससीएफएनंबर 0x1dd44bc0> valueForUndefinedKey:]: यह वर्ग कुंजी अधिकतम के लिए महत्वपूर्ण मूल्य कोडिंग-अनुरूप नहीं है।' कोई विचार क्या गलत है? – uerceg

+0

मुझे खेद है। मुझे लगता है कि यह एनएसपीडिकेट के रूप में व्यवहार करेगा और 'स्वयं' का उपयोग करेगा जब कुछ और निर्दिष्ट नहीं किया गया था। सही दूसरा उदाहरण '[myArrayOfNumbers valueForKeyPath: @ "@ max.self"] होगा; '(उत्तर अपडेट) –

+0

मैंने सोचा कि आप इस समाधान का प्रस्ताव देंगे, लेकिन वास्तव में अजीब बात यह है कि यह अद्यतन समाधान मेरे लिए काम नहीं करता है और न ही । मुझे पहले की तरह एक ही त्रुटि संदेश मिलता है। – uerceg

1

आप लगभग वहाँ हो, तुम सिर्फ सही क्षेत्र आप चाहते हैं जिसमें से आप अधिकतम मूल्य चाहते हैं निर्दिष्ट करने की आवश्यकता:

NSInteger max = [[numbers valueForKeyPath:@"@max.age"] integerValue]; 

मैं NSInteger रों करने की छूट अपने int रों संशोधित करने के लिए ले लिया है, बस में मामला किसी दोनों iOS और ओएस एक्स

+1

यह वास्तव में एक अच्छा जवाब है :) और यह एक वोट वोट – Rambatino

संबंधित मुद्दे