2010-02-05 9 views
7

मुझे एनएसएआरएआरई की सामग्री को एनएसएमयूटेबल सरणी में कॉपी करने की आवश्यकता है। दूसरे शब्दों में, मैं arrayCountResults में arrayCountryChoices की प्रतिलिपि बनाना चाहता हूं। कोई विचार????आईफोन एसडीके: NSMrray की सामग्री को एनएसएमयूटेबल सरणी में कैसे कॉपी करें?

//main data 
NSArray *arrayCountryChoices; 

//search results buffer 
NSMutableArray *arraySearchResults; 


//create data 
arrayCountryChoices = [[NSArray alloc] initWithObjects:@"foo",@"bar",@"baz",nil]; 

//copy the original array to searchable array ->> THIS IS NOT WORKING AS EXPECTED 
arraySearchResults = [[NSMutableArray alloc] arrayWithArray:arrayCountryChoices]; 

अग्रिम धन्यवाद।

उत्तर

23

यह या तो

[NSMutableArray arrayWithArray:anArray]; 

या

[[NSMutableArray alloc] initWithArray:anArray]; 

या

[anArray mutableCopy]; 

क्योंकि आप NSMutableArray का एक उदाहरण पर arrayWithArray कॉल कर रहे हैं अपने उदाहरण में कोड काम नहीं करता है, लेकिन arrayWithArray एक क्लास विधि है।

एक सामान्य नियम के रूप में, init से शुरू होने वाली इनटाइलाइजेशन विधियां उदाहरण विधियां हैं, और कक्षा के नाम से शुरू होने वाले (array, आदि) कक्षा विधियां हैं। क्लास विधियां ऑटोरेलेज्ड ऑब्जेक्ट्स लौटती हैं, जबकि इंस्टेंस विधियां ऑब्जेक्ट्स को वापस रखती हैं।

+0

// मूल सरणी को खोजने योग्य सरणी \t arraySearchResults = [[NSMutableArray alloc] initWithArray: arrayCountryChoices]; एक चैंप की तरह काम किया। धन्यवाद। – user265550

+0

आपका स्वागत है। –

+0

इनमें से कौन सा अधिक कुशल है? – FreeAsInBeer

0

यह काम नहीं कर रहा है क्योंकि arrayWithArray एक क्लास विधि है, उदाहरण विधि नहीं।

आप जो भी चाहते हैं उसे करने के लिए आप [NSMutableArray arrayWithArray:arrayCountryChoices] कर सकते हैं।

arrayCountryChoices की सामग्री के साथ एक नया म्यूटेबल सरणी वापस करने के लिए आप बस [arrayCountryChoices mutableCopy] पर कॉल कर सकते हैं।

4

तुम भी खाली परिवर्तनशील सरणी बना सकते हैं और -addObjectsFromArray पद्धति का उपयोग करके यह करने के लिए वस्तुओं में जोड़ सकते हैं

2

कृपया ध्यान दें कि का उपयोग करते समय:

[NSMutableArray arrayWithArray:anArray]; 

या

[[NSMutableArray alloc] initWithArray:anArray]; 

आप हमेशा एक मिल जाएगा सरणी, भले ही anArray शून्य था, लेकिन इसके साथ:

[anArray mutableCopy]; 

यदि कोई ऐरे शून्य है तो आपको शून्य मिलेगी। इसलिए यदि आप यह सुनिश्चित करना चाहते हैं कि वास्तव में एक सरणी हो, भले ही यह खाली हो, तो पूर्व विधियों का उपयोग करें।

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