2009-11-28 13 views
18

ऐसा लगता है कि यह बेवकूफ सवाल है, लेकिन मैं NSArray में स्ट्रिंग कैसे ढूंढ सकता हूं?एनएसएआरएआरई में स्ट्रिंग कैसे ढूंढें?

मैं

[array indexOfObjectIdenticalTo:myString] 

उपयोग करने की कोशिश, लेकिन है कि एक ही पते के लिए स्टिंग की आवश्यकता है।

क्या किसी को यह करने के तरीके पर कोई सुझाव है?

उत्तर

50

आप the indexOfObject: method चाहते हैं, जो प्रत्येक ऑब्जेक्ट को isEqual: संदेश में भेजकर ऑब्जेक्ट की तलाश करता है।

13

पीटर का जवाब सही है।

एक अतिरिक्त नोट; यदि आपके पास सरणी में बहुत सारे तार और तार हैं, -indexOfObject: एक रैखिक खोज करने जा रहा है। यह एक प्रदर्शन बाधा साबित हो सकता है जिसके लिए आपको एक अलग कंटेनर का उपयोग करने पर विचार करना चाहिए; एक एनएसएसएटी या एनएस डिक्शनरी, संभवतः (तारों के मतलब के आधार पर)।

एक और गोचा यह है कि तार सभी अपेक्षाकृत समान और/या अपेक्षाकृत लंबे हैं।

बेशक, जब तक आप एक प्रदर्शन समस्या नहीं है, यह साबित करने के लिए विश्लेषण टूल का उपयोग करने तक कुछ भी अनुकूलित करने की परेशानी न करें।

4

आप कंटेनर के रूप में NSOrderSet उपयोग कर सकते हैं, NSOrderedSet क्लास संदर्भ में अधिक देखने के नीचे है:

NSOrderedSet और उसके उपवर्ग, NSMutableOrderedSet, वस्तुओं का एक आदेश दिया संग्रह करने के लिए कार्यक्रम संबंधी इंटरफेस घोषणा करते हैं।

NSOrderedSet विशिष्ट वस्तुओं के स्थिर सेट के लिए प्रोग्रामैटिक इंटरफेस की घोषणा करता है। आप> एक स्थिर सेट की प्रविष्टियां स्थापित करते समय स्थापित करते हैं, और इसके बाद प्रविष्टियों को संशोधित नहीं किया जा सकता है। दूसरी तरफ, एनएसएमयूटेबलऑर्डर्डसेट, अलग-अलग वस्तुओं के गतिशील सेट के लिए प्रोग्रामेटिक इंटरफ़ेस घोषित करता है। एक गतिशील-या परिवर्तनीय-सेट किसी भी समय प्रविष्टियों के जोड़ और हटाना> स्वचालित रूप से आवश्यक स्मृति को आवंटित करने की अनुमति देता है।

आप ऑर्डर के सेट के रूप में आदेशित सेट का उपयोग कर सकते हैं जब तत्वों का क्रम महत्वपूर्ण है> और सेट में कोई वस्तु निहित है या नहीं, यह जांचने में प्रदर्शन एक विचार है-> किसी सरणी की सदस्यता के लिए परीक्षण परीक्षण से धीमा है एक सेट की सदस्यता।

जाएँ http://developer.apple.com/library/mac/#documentation/Foundation/Reference/NSOrderedSet_Class/Reference/Reference.html

1

containsObject:

एक बूलियन मान कि यह दर्शाता है कि किसी दिए गए वस्तु सरणी में मौजूद है देता है।

  • (BOOL) containsObject: (आईडी) anObject पैरामीटर anObject एक वस्तु।

वापसी मूल्य हाँ अगर anObject, सरणी में मौजूद है अन्यथा नहीं।

चर्चा

इस विधि निर्धारित करता है कि anObject एक isEqual भेजकर सरणी में मौजूद है: सरणी के वस्तुओं में से प्रत्येक के संदेश (और anObject प्रत्येक isEqual को पैरामीटर के रूप में पारित करने: संदेश)।

में घोषित NSArray.h

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