Agregar un elemento a una matriz en Swift
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?
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.
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
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 Array
clase con una extensión .