¿Cómo crear una matriz vacía en Swift?

154

Estoy realmente confundido con las formas en que creamos una matriz en Swift. ¿Podría decirme cuántas formas de crear una matriz vacía con algún detalle?

Inuyasha
fuente
9
var myArray: [String] = []
Leo Dabus
Entonces, ¿qué debo hacer si quiero almacenar algún tipo de objeto en mi matriz?
Inuyasha
var myArray: [AnyObject] = []
Leo Dabus

Respuestas:

296

Aqui tienes:

var yourArray = [String]()

Lo anterior también funciona para otros tipos y no solo para cadenas. Es solo un ejemplo.

Agregarle valores

¡Supongo que eventualmente querrás agregarle un valor!

yourArray.append("String Value")

O

let someString = "You can also pass a string variable, like this!"
yourArray.append(someString)

Agregar insertando

Una vez que tenga algunos valores, puede insertar nuevos valores en lugar de agregarlos. Por ejemplo, si desea insertar nuevos objetos al comienzo de la matriz (en lugar de agregarlos al final):

yourArray.insert("Hey, I'm first!", atIndex: 0)

O puede usar variables para hacer que su inserción sea más flexible:

let lineCutter = "I'm going to be first soon."
let positionToInsertAt = 0
yourArray.insert(lineCutter, atIndex: positionToInsertAt)

Es posible que eventualmente desee eliminar algunas cosas

var yourOtherArray = ["MonkeysRule", "RemoveMe", "SwiftRules"]
yourOtherArray.remove(at: 1)

Lo anterior funciona muy bien cuando sabe en qué parte de la matriz está el valor (es decir, cuando conoce su valor de índice). Como los valores del índice comienzan en 0, la segunda entrada estará en el índice 1.

Eliminar valores sin conocer el índice

¿Pero y si no lo haces? ¿Qué sucede si yourOtherArray tiene cientos de valores y todo lo que sabe es que desea eliminar el igual a "RemoveMe"?

if let indexValue = yourOtherArray.index(of: "RemoveMe") {
    yourOtherArray.remove(at: indexValue)
}

¡Esto debería ayudarte a comenzar!

Dave G
fuente
No estoy seguro de por qué esta respuesta tiene más votos. Responde una gran cantidad de preguntas que el OP nunca hizo, pero solo proporciona una forma de crear una matriz vacía, cuando la pregunta fue 'por favor dígame cuántas formas de crear una matriz vacía'.
Kal
27
var myArr1 = [AnyObject]()

puede almacenar cualquier objeto

var myArr2 = [String]()

solo puede almacenar cadenas

vichhai
fuente
¿Puedes decir cómo agregar elementos dentro de la lista de matriz
Gowthaman M
25

Podrías usar

var firstNames: [String] = []
DPen
fuente
24

Swift 3

Hay tres (3) formas de crear una matriz vacía en Swift y siempre se prefiere la sintaxis abreviada .

Método 1: sintaxis abreviada

var arr = [Int]()

Método 2: inicializador de matriz

var arr = Array<Int>()

Método 3: matriz con una matriz literal

var arr:[Int] = []

Método 4: el crédito va a @BallpointBen

var arr:Array<Int> = []
Lorem Ipsum Dolor
fuente
1
O var arr: Array<Int> = []. [T]es solo una abreviatura deArray<T>
BallpointBen
@XinyangLi ¿por qué se prefiere la sintaxis abreviada? ¿Hay alguna diferencia en el tiempo de compilación entre esas 4 formas?
KlimczakM
20

Hay 2 formas principales de crear / inicializar una matriz en Swift.

var myArray = [Double]()

Esto crearía una serie de Dobles.

var myDoubles = [Double](count: 5, repeatedValue: 2.0)

Esto crearía una matriz de 5 dobles, todos inicializados con el valor de 2.0.

Aaron
fuente
Gracias, ¿puedo declarar así `var myArray = [AnyObject] ()`?
Inuyasha
Sí, eso hará una serie de 'AnyObject' que le permitirá poner casi cualquier cosa allí. A menos que necesite una matriz como esta, sería mejor darle un valor específico como 'var myArray = [String] ()'.
Aaron
Note Swift 4 cambió la sintaxis para inicializar la matriz con valores repetidos a lo siguiente: var myDoubles = [Double](repeating: 2.0, count: 5)- observe el cambio de orden de los parámetros y el cambio en la etiqueta de repeatedValuearepeating
HirdayGupta
8

Si desea declarar una matriz vacía de tipo de cadena, puede hacerlo de 5 maneras diferentes: -

var myArray: Array<String> = Array()
var myArray = [String]()
var myArray: [String] = []
var myArray = Array<String>()
var myArray:Array<String> = []

Matriz de cualquier tipo: -

    var myArray: Array<AnyObject> = Array()
    var myArray = [AnyObject]()
    var myArray: [AnyObject] = []
    var myArray = Array<AnyObject>()
    var myArray:Array<AnyObject> = []

Matriz de tipo entero: -

    var myArray: Array<Int> = Array()
    var myArray = [Int]()
    var myArray: [Int] = []
    var myArray = Array<Int>()
    var myArray:Array<Int> = []
Piyush Ranjan
fuente
7

Aquí hay algunas tareas comunes en Swift 4 que puede usar como referencia hasta que se acostumbre a las cosas.

    let emptyArray = [String]()
    let emptyDouble: [Double] = []

    let preLoadArray = Array(repeating: 0, count: 10) // initializes array with 10 default values of the number 0

    let arrayMix = [1, "two", 3] as [Any]
    var arrayNum = [1, 2, 3]
    var array = ["1", "two", "3"]
    array[1] = "2"
    array.append("4")
    array += ["5", "6"]
    array.insert("0", at: 0)
    array[0] = "Zero"
    array.insert(contentsOf: ["-3", "-2", "-1"], at: 0)
    array.remove(at: 0)
    array.removeLast()
    array = ["Replaces all indexes with this"]
    array.removeAll()

    for item in arrayMix {
        print(item)
    }

    for (index, element) in array.enumerated() {
        print(index)
        print(element)
    }

    for (index, _) in arrayNum.enumerated().reversed() {
        arrayNum.remove(at: index)
    }

    let words = "these words will be objects in an array".components(separatedBy: " ")
    print(words[1])

    var names = ["Jemima", "Peter", "David", "Kelly", "Isabella", "Adam"]
    names.sort() // sorts names in alphabetical order

    let nums = [1, 1234, 12, 123, 0, 999]
    print(nums.sorted()) // sorts numbers from lowest to highest
Poli
fuente
4

La matriz en swift se escribe como ** Array <Element> **, donde Element es el tipo de valores que la matriz puede almacenar.

La matriz se puede inicializar como:

let emptyArray = [String]()

Muestra que es una matriz de tipo cadena

Se infiere que el tipo de la variable emptyArray es [String] del tipo del inicializador.

Para crear la matriz de tipo cadena con elementos

var groceryList: [String] = ["Eggs", "Milk"]

groceryList se ha inicializado con dos elementos

La variable groceryList se declara como "una matriz de valores de cadena" , escrita como [String]. Esta matriz particular ha especificado un tipo de valor de String, solo puede almacenar valores de String.

Hay varias propiedades de la matriz como:

- Para verificar si la matriz tiene elementos (si la matriz está vacía o no)

Propiedad isEmpty (booleana) para verificar si la propiedad count es igual a 0:

if groceryList.isEmpty {
    print("The groceryList list is empty.")
} else {
    print("The groceryList is not empty.")
}

- Agregar elementos (agregar) en la matriz

Puede agregar un nuevo elemento al final de una matriz llamando al método append (_ :) de la matriz:

groceryList.append("Flour")

groceryList ahora contiene 3 artículos.

Alternativamente, agregue una matriz de uno o más elementos compatibles con el operador de asignación de suma (+ =):

groceryList += ["Baking Powder"]

groceryList ahora contiene 4 artículos

groceryList += ["Chocolate Spread", "Cheese", "Peanut Butter"]

groceryList ahora contiene 7 artículos

abdominales
fuente
3

Según Swift 5

    // An array of 'Int' elements
    let oddNumbers = [1, 3, 5, 7, 9, 11, 13, 15]

    // An array of 'String' elements
    let streets = ["Albemarle", "Brandywine", "Chesapeake"]

    // Shortened forms are preferred
    var emptyDoubles: [Double] = []

    // The full type name is also allowed
    var emptyFloats: Array<Float> = Array()
Manoj Perumarath
fuente
2

puede eliminar el contenido de la matriz pasando el índice de la matriz o puede eliminar todo

    var array = [String]()
    print(array)
    array.append("MY NAME")
    print(array)
    array.removeFirst()
    print(array)
    array.append("MY NAME")
    array.removeLast()
    array.append("MY NAME1")
    array.append("MY NAME2")
    print(array)
    array.removeAll()
    print(array)
Ullas Pujary
fuente
1

Swift 5

// Create an empty array
var emptyArray = [String]()

// Add values to array by appending (Adds values as the last element)
emptyArray.append("Apple")
emptyArray.append("Oppo")

// Add values to array by inserting (Adds to a specified position of the list)
emptyArray.insert("Samsung", at: 0)

// Remove elements from an array by index number
emptyArray.remove(at: 2)

// Remove elements by specifying the element
if let removeElement = emptyArray.firstIndex(of: "Samsung") {
    emptyArray.remove(at: removeElement)
}

Se da una respuesta similar, pero eso no funciona para la última versión de Swift (Swift 5), así que aquí está la respuesta actualizada. ¡Espero eso ayude! :)

Abdullah Ajmal
fuente
1

Iniciar una matriz con un recuento predefinido:

Array(repeating: 0, count: 10)

A menudo uso esto para las declaraciones de mapeo donde necesito un número específico de objetos simulados. Por ejemplo,

let myObjects: [MyObject] = Array(repeating: 0, count: 10).map { _ in return MyObject() }

thexande
fuente
0

Compatible con: Xcode 6.0.1+

Puede crear una matriz vacía especificando el tipo de Elemento de su matriz en la declaración.

Por ejemplo:

// Shortened forms are preferred
var emptyDoubles: [Double] = []

// The full type name is also allowed
var emptyFloats: Array<Float> = Array()

Ejemplo de la página del desarrollador de Apple (matriz):

Espero que esto ayude a cualquiera que se encuentre con esta página.

Un loco
fuente