2013-03-04 14 views
8

में वैल्यू इंडेक्स को स्वैप कैसे करें मेरे पास NSArray है। मेरे पास उस सरणी के अंदर कुछ मूल्य है।NSArray

NSArray *testArray = [NSArray arrayWithObjects:@"Test 1", @"Test 2", @"Test 3", @"Test 4", @"Test 5", nil]; 
NSLog(@"%@", testArray); 

परिणाम bellow की तरह है:

(
"Test 1", 
"Test 2", 
"Test 3", 
"Test 4", 
"Test 5" 
) 

अब मैं इस तरह परिणाम हैं:

(
"Test 3", 
"Test 5", 
"Test 1", 
"Test 2", 
"Test 4" 
) 

वहाँ को पुनः आरंभ कर देता है बिना यह करने के लिए कोई तरीका है? क्या मैं इस सरणी के मूल्य को स्वैप कर सकता हूं?

+2

सं NSArray, के रूप में यह है स्थिर है, इसलिए आप भी नहीं होगा इसमें कुछ भी जोड़ने में सक्षम, अकेले छोड़ दिया प्रविष्टियों को shuffling। हालांकि 'एनएसएमयूटेबलएरे' में एक फंक्शन 'sortUsingSelector' है। इस विधि के साथ, आप अपना खुद का सॉर्टिंग ऑर्डर निर्धारित कर सकते हैं। – ATaylor

+0

@ATaylor: क्या यह एनएसएमयूटेबलएरे में संभव है ?? –

+0

@ बीएमडब्ल्यू। हाँ एनएसएमयूटेबलएरे में यह संभव है .. –

उत्तर

6

आपका सरणी एक NSMutableArray का एक उदाहरण होना चाहिए अन्यथा लिखने के तरीकों की अनुमति नहीं है (NSArray केवल पढ़ने के लिए)

उपयोग निम्न विधि:

- (void)replaceObjectAtIndex:(NSUInteger)index withObject:(id)anObject 

आप संग्रहीत करने के लिए एक अस्थायी भंडारण की आवश्यकता होगी की जगह वस्तु:

id tempObj = [testArray objectAtIndex:index]; 
[testArray replaceObjectAtIndex:index withObject:[testArray objectAtIndex:otherIndex]]; 
[testArray replaceObjectAtIndex:otherIndex withObject:tempObj]; 
+0

धन्यवाद giorashc .... यह आकर्षण की तरह काम है। मदद के लिए धन्यवाद। –

+19

आप 'exchangeObjectAtIndex: withObjectAtIndex:' का उपयोग कर सकते हैं, तो आपको अस्थायी वस्तु की आवश्यकता नहीं है। –

+0

@ मार्टिनआर: इसे आज़माएं ... मदद के लिए धन्यवाद ... –

7

उपयोग NSMutableArray दो स्वैप करने के लिए वस्तुओं।

- exchangeObjectAtIndex:withObjectAtIndex: 

यह दिया अनुक्रमित (idx1 और idx2)

idx1
वस्तु जिसके साथ सूचकांक idx2 पर वस्तु की जगह के सूचकांक में सरणी में वस्तुओं आदान।

idx2
ऑब्जेक्ट की अनुक्रमणिका जो इंडेक्स idx1 पर ऑब्जेक्ट को प्रतिस्थापित करने के लिए है।

स्विफ्ट

func exchangeObjectAtIndex(_ idx1: Int, 
     withObjectAtIndex idx2: Int) 

ऑब्जेक्टिव-सी उपयोग एक NSMutableArray

- (void)exchangeObjectAtIndex:(NSUInteger)idx1 
       withObjectAtIndex:(NSUInteger)idx2 

Swapping elements in an NSMutableArray