2011-11-14 6 views
9

की सरणी के लिए NSNumbers की NSArray कन्वर्ट करने के लिए मैं एक NSArrayNSNumbers से मिलकर है और मैं NSStrings के NSArray में बदलने के लिए, पहली सरणी में प्रत्येक NSNumber की stringValue हो रही द्वारा चाहते हैं।बेहतर तरीका NSStrings

मेरे दिमाग में आने वाली विधि पहले मान में प्रत्येक मान को पुन: सक्रिय कर रही है, इसकी स्ट्रिंग मान प्राप्त कर रही है और इसे किसी अन्य सरणी में जोड़ रही है। लेकिन इसके लिए एक और अधिक सुरुचिपूर्ण समाधान होना चाहिए। क्या आप एक जानते हैं?

+4

मुझे लगता है कि आपका समाधान सबसे सुरुचिपूर्ण है :-) क्योंकि यह आसान और स्पष्ट – Victor

+1

यदि आप कोड की 3 लाइनों की तुलना में बेहतर समाधान खोजने के लिए एक गुजरने के प्रयास से अधिक कर रहे हैं, तो आपके पास बहुत अधिक मुफ्त है पहर। – morningstar

+3

@ मॉर्निंगस्टार: :) मेरे पास इतना समय नहीं है कि वास्तव में स्थिति विपरीत है, लेकिन कभी-कभी ढांचे अद्भुत तरीके प्रदान करते हैं जिन्हें आप उन्हें नहीं जानते पछतावा करते हैं। मुझे पता है कि अगर कोई है तो उन्हें ढूंढना पसंद है। – aslisabanci

उत्तर

31

NSArrayKey-Value Coding विधि valueForKey: लागू करता है इस तरह से यह एक नई सरणी देता है। नए सरणी में प्रत्येक ऑब्जेक्ट को निर्दिष्ट मान के लिए मूल सरणी में पूछने के परिणाम शामिल हैं। इस मामले में, NSNumber अपने stringValue है, तो तुम सब करने की है:

NSArray * b = [a valueForKey:@"stringValue"]; 

सादा वर्ष तेजी से गणना (या enumerateObjectsUsingBlock:) एक भयानक समाधान है, हालांकि नहीं होगा। NSArray का valueForKey: का कार्यान्वयन आंतरिक रूप से for लूप का आंतरिक रूप से उपयोग करता है, और इसे बाद में इसे पढ़ने वाले किसी भी व्यक्ति द्वारा आसानी से समझा जाएगा।

+0

वाह, क्या यह वास्तव में है? यह अपमानजनक प्रतीत होता है लेकिन यह भी कमाल है। – jbat100

+4

अपमानजनक नहीं - काफी मूर्खतापूर्ण आईएमओ। StringValue NSNumber क्लास की एक वैध विशेषता है, और NSArray का मानफोरकी: जानबूझकर इस तरह से सरणी को बदलने की अनुमति देने के लिए डिज़ाइन किया गया है। यह वही है जो मैं इसे लिखूंगा, जो कुछ भी लायक है। – Chuck

+0

मैं पुष्टि करता हूं कि यह काम करता है, +1 ... – jbat100