Agregar un elemento a una matriz en Swift

Resuelto Fela asked hace 10 años • 15 respuestas

Supongamos que tengo una matriz, por ejemplo:

var myArray = ["Steve", "Bill", "Linus", "Bret"]

Y luego quiero insertar/añadir un elemento al final de dicha matriz, para obtener:

["Steve", "Bill", "Linus", "Bret", "Tim"]

¿Qué método debo utilizar?

¿Y qué pasa en el caso en el que quiero agregar un elemento al frente de la matriz? ¿Existe un cambio de tiempo constante?

Fela avatar Jun 03 '14 03:06 Fela
Aceptado

A partir de Swift 3/4/5 , esto se hace de la siguiente manera.

Para agregar un nuevo elemento al final de un Array.

anArray.append("This String")

Para agregar una matriz diferente al final de su matriz.

anArray += ["Moar", "Strings"]
anArray.append(contentsOf: ["Moar", "Strings"])

Para insertar un nuevo elemento en su Array.

anArray.insert("This String", at: 0)

Para insertar el contenido de un Array diferente en su Array.

anArray.insert(contentsOf: ["Moar", "Strings"], at: 0)

Puede encontrar más información en el capítulo "Tipos de colecciones" de " El lenguaje de programación Swift ", que comienza en la página 110.

Mick MacCallum avatar Jun 02 '2014 20:06 Mick MacCallum

También puede pasar una variable y/u objeto si así lo desea.

var str1:String = "John"
var str2:String = "Bob"

var myArray = ["Steve", "Bill", "Linus", "Bret"]

//add to the end of the array with append
myArray.append(str1)
myArray.append(str2)

Para agregarlos al frente:

//use 'insert' instead of append
myArray.insert(str1, atIndex:0)
myArray.insert(str2, atIndex:0)

//Swift 3
myArray.insert(str1, at: 0)
myArray.insert(str2, at: 0)

Como ya han dicho otros, ya no puedes usar '+=' a partir de xCode 6.1

Steve Quatrale avatar Oct 24 '2014 23:10 Steve Quatrale

Para agregar al final, use el +=operador:

myArray += ["Craig"]
myArray += ["Jony", "Eddy"]

Ese operador es generalmente equivalente al append(contentsOf:)método. (Y en versiones Swift realmente antiguas, se podían agregar elementos individuales, no solo otras colecciones del mismo tipo de elemento).

También existe insert(_:at:)para insertar en cualquier índice.

Si, por ejemplo, desea una función conveniente para insertar al principio, puede agregarla a la Arrayclase con una extensión .

rickster avatar Jun 02 '2014 20:06 rickster