Arrays haben vollen Wert Semantik in Swift verwendet wird, so gibt es keine Notwendigkeit für etwas Phantasie.
var duplicateArray = originalArray
ist alles was Sie brauchen.
Wenn der Inhalt Ihres Arrays ein Referenztyp ist, dann werden ja nur die Zeiger auf Ihre Objekte kopiert. Um eine tiefe Kopie des Inhalts durchzuführen, verwenden Sie stattdessen map
und führen eine Kopie jeder Instanz durch. Für Foundation Klassen, die mit dem NSCopying
Protokoll entsprechen, können Sie die copy()
Methode verwenden:
let x = [NSMutableArray(), NSMutableArray(), NSMutableArray()]
let y = x
let z = x.map { $0.copy() }
x[0] === y[0] // true
x[0] === z[0] // false
Hinweis, dass es Gefahren hier, dass Swift Wert Semantik arbeiten Sie davor zu schützen, zum Beispiel, da NSArray
eine unveränderliche Array repräsentiert , seine copy
Methode gibt nur einen Verweis auf sich selbst zurück, so dass der obige Test zu unerwarteten Ergebnissen führen würde.
Warum weisen Sie den Wert nicht direkt wie folgt zu: 'var duplicateArray = originalArray' –
Vielen Dank! Es funktionierte! – Patrick