2015-11-03 14 views
19

Ho un semplice array come:Come scambiare gli elementi nell'array rapido?

var cellOrder = [1,2,3,4] 

voglio scambiare elementi come supporre un secondo elemento con il primo elemento.

E risultato sarà:

[2,1,3,4] 

So che possiamo usare exchangeObjectAtIndex con NSMutableArray Ma voglio usare rapida array. Qualche modo per fare lo stesso con l'array [Int] rapido?

+4

Si dovrebbe sapere su 'swap()' perché * si * ha postato una domanda al riguardo: [errore fatale: lo swapping di una posizione con se stesso non è supportato con Swift 2.0] (http://stackoverflow.com/questions/ 32689753/fatal-error-swapping-a-location-with-itself-is-not-supported-with-swift-2-0) –

risposta

38

Uso swap:

var cellOrder = [1,2,3,4] 
swap(&cellOrder[0], &cellOrder[1]) 

In alternativa, si può semplicemente assegnare come una tupla:

(cellOrder[0], cellOrder[1]) = (cellOrder[1], cellOrder[0]) 
+0

Molto elegante e semplice –

+0

In swift 4 è ora 'swapAt' – Rishab

+0

' swapAt' è un funzione diversa che prende gli indici piuttosto che i valori 'inout'. Può essere usato anche per risolvere questo problema, ma non è un sostituto di 'swap' (che esiste ancora in Swift 4). –

7

Una possibilità è:

cellOrder[0...1] = [cellOrder[1], cellOrder[0]] 
13

rapida 4:

cellOrder.swapAt(index0, index1)

+1

Questo non fornisce una risposta alla domanda. Per criticare o richiedere chiarimenti da un autore, lascia un commento sotto il loro post. - [Dalla recensione] (/ recensione/post di bassa qualità/16686681) – basvk

+1

@basvk Penso che risponda alla domanda - mostra come "scambiare due elementi" dall'array. Ed è una risposta valida alla domanda (anche corretta). – Zizouz212

+1

@basvk Grazie per il vostro consiglio. Per rispondere a questa domanda, 'cellOrder.swapAt (0, 1)' dovrebbe essere migliore per capire. E anche grazie @ Zizouz212. – hstdt

Problemi correlati