Gli array hanno una semantica pieno valore a Swift, quindi non c'è bisogno di qualcosa di fantasia.
var duplicateArray = originalArray
è tutto ciò che serve.
Se il contenuto del vostro array sono un tipo di riferimento, allora sì, questo sarà solo copiare i puntatori agli oggetti. Per eseguire una copia profonda dei contenuti, si dovrebbe invece utilizzare map
ed eseguire una copia di ciascuna istanza. Per le classi della Fondazione conformi al protocollo NSCopying
, è possibile utilizzare il metodo copy()
:
let x = [NSMutableArray(), NSMutableArray(), NSMutableArray()]
let y = x
let z = x.map { $0.copy() }
x[0] === y[0] // true
x[0] === z[0] // false
Nota che ci sono insidie qui che la semantica di valore di Swift sono al lavoro per proteggere l'utente da, ad esempio, dal momento che NSArray
rappresenta un array immutabili , il suo metodo copy
restituisce solo un riferimento a se stesso, quindi il test sopra avrebbe dato risultati imprevisti.
fonte
2015-01-07 04:42:02
perché non si assegna il valore direttamente in questo modo: 'var duplicateArray = originalArray' –
Grazie! Ha funzionato! – Patrick