2013-03-04 30 views
8

için değer dizininde nasıl geçiş yapılır NSArray var. Bu dizinin içinde biraz değer var.NSArray

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

Sonucu feryat gibidir:

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

diziyi başlangıç ​​durumuna yeniden olmadan bunu yapmak için herhangi bir yolu var mı:

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

Şimdi böyle bir sonuç istiyor? Bu dizinin değerini değiştirebilir miyim?

+2

sayılı NSArray, durağandır Ona bir şey ekleyebildiğim, yalnız bırakarak girişleri karıştırdı. 'NSMutableArray' işlevi 'sortUsingSelector' işlevine sahip olsa da. Bu yöntemle kendi sıralama düzeninizi belirleyebilirsiniz. – ATaylor

+0

@ATaylor: NSMutableArray'da mümkün mü? –

+0

@ B.M.W. Evet, NSMutableArray içinde mümkün .. –

cevap

6

Kişisel dizi aksi yöntemler izin verilmez yazma bir NSMutableArray örneğidir olmalıdır (NSArray salt okunur)

kullanın aşağıdaki yöntemi:

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

Eğer saklamak için geçici depolama alanına ihtiyaç olacak cümledeki nesne:

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

Teşekkürler giorashc .... Bu çekicilik gibi çalışır. Yardım için teşekkürler. –

+19

'exchangeObjectAtIndex: withObjectAtIndex:' öğesini kullanabilirsiniz, daha sonra geçici bir nesneye ihtiyacınız yoktur. –

+0

@MartinR: onu deneyecek ... Yardım için teşekkürler ... –

7

Kullanım NSMutableArray ikisini takas nesneler.

- exchangeObjectAtIndex:withObjectAtIndex: 

Verilen indeksleri (idx1 ve idx2)

idx1
göstergesi idx2 nesneyi yerine nesnenin indeksi en dizisinin nesneleri değiştirir.

idx2
Nesnenin indeks idx1'de değiştirileceği nesnenin dizini.

SWIFT

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

AMAÇ-C kullanın NSMutableArray

- (void)exchangeObjectAtIndex:(NSUInteger)idx1 
       withObjectAtIndex:(NSUInteger)idx2 
olduğu gibi hatta olmazdı böylece

Swapping elements in an NSMutableArray