Como criar uma matriz vazia no Swift?

154

Estou realmente confuso com a maneira como criamos uma matriz no Swift. Você poderia me dizer quantas maneiras de criar uma matriz vazia com alguns detalhes?

Inuyasha
fonte
9
var myArray: [String] = []
Leo Dabus 25/05
Então, o que devo fazer se quiser armazenar qualquer tipo de objeto na minha matriz?
Inuyasha
var myArray: [AnyObject] = []
Leo Dabus

Respostas:

296

Aqui está:

var yourArray = [String]()

O exemplo acima também funciona para outros tipos e não apenas para cadeias. É apenas um exemplo.

Adicionando valores a ele

Presumo que, eventualmente, você queira adicionar um valor a ele!

yourArray.append("String Value")

Ou

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

Adicionar inserindo

Depois de ter alguns valores, você pode inserir novos valores em vez de anexar. Por exemplo, se você deseja inserir novos objetos no início da matriz (em vez de anexá-los ao final):

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

Ou você pode usar variáveis ​​para tornar sua inserção mais flexível:

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

Eventualmente, você pode querer remover algumas coisas

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

O exemplo acima funciona muito bem quando você sabe onde está o valor na matriz (ou seja, quando você conhece seu valor de índice). Como os valores do índice começam em 0, a segunda entrada estará no índice 1.

Removendo valores sem conhecer o índice

Mas e se você não? E se o yourOtherArray tiver centenas de valores e tudo o que você sabe é que deseja remover o igual a "RemoveMe"?

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

Isso deve começar!

Dave G
fonte
Não sei por que essa resposta tem mais votos. Ele responde a muitas perguntas que o OP nunca fez, mas fornece apenas uma maneira de criar uma matriz vazia, quando a pergunta 'por favor me diga quantas maneiras de criar uma matriz vazia'.
Kal
27
var myArr1 = [AnyObject]()

pode armazenar qualquer objeto

var myArr2 = [String]()

pode armazenar apenas string

vichhai
fonte
você pode dizer como adicionar lista de matriz elemento dentro
Gowthaman M
25

Você poderia usar

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

Swift 3

Existem três (3) maneiras de criar uma matriz vazia no Swift e a forma de sintaxe abreviada é sempre a preferida.

Método 1: sintaxe abreviada

var arr = [Int]()

Método 2: inicializador de matriz

var arr = Array<Int>()

Método 3: matriz com um literal de matriz

var arr:[Int] = []

Método 4: o crédito vai para @BallpointBen

var arr:Array<Int> = []
Lorem Ipsum Dolor
fonte
1
Or var arr: Array<Int> = []. [T]é apenas uma abreviação paraArray<T>
BallpointBen
@XinyangLi por que a sintaxe abreviada é preferida? Existe alguma diferença no tempo de compilação entre essas 4 maneiras?
precisa saber é o seguinte
20

Existem 2 maneiras principais de criar / inicializar uma matriz rapidamente.

var myArray = [Double]()

Isso criaria uma matriz de duplas.

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

Isso criaria uma matriz de 5 duplos, todos inicializados com o valor de 2,0.

Aaron
fonte
Obrigado, posso declarar assim `var myArray = [AnyObject] ()`?
Inuyasha
Sim, isso criará uma matriz de 'AnyObject' que permitirá que você coloque praticamente qualquer coisa lá. A menos que você precise de uma matriz como essa, seria melhor atribuir a ela um valor específico como 'var myArray = [String] ()'.
Aaron
Nota O Swift 4 alterou a sintaxe para inicializar a matriz com valores repetidos para o seguinte: var myDoubles = [Double](repeating: 2.0, count: 5)- observe a alteração da ordem dos parâmetros e a alteração no rótulo de repeatedValuepararepeating
HirdayGupta
8

Se você deseja declarar uma matriz vazia do tipo de sequência, pode fazer isso de 5 maneiras diferentes: -

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

Matriz de qualquer tipo: -

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

Matriz do tipo Inteiro: -

    var myArray: Array<Int> = Array()
    var myArray = [Int]()
    var myArray: [Int] = []
    var myArray = Array<Int>()
    var myArray:Array<Int> = []
piyush ranjan
fonte
7

Aqui estão algumas tarefas comuns no Swift 4 que você pode usar como referência até se acostumar com as coisas.

    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
Bobby
fonte
4

Matriz em swift é escrita como ** Matriz <Elemento> **, em que Elemento é o tipo de valores que a matriz pode armazenar.

A matriz pode ser inicializada como:

let emptyArray = [String]()

Isso mostra que é uma matriz do tipo string

O tipo da variável emptyArray é inferido como [String] do tipo do inicializador.

Para Criando a matriz do tipo string com elementos

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

groceryList foi inicializado com dois itens

A variável groceryList é declarada como "uma matriz de valores de sequência" , escrita como [String]. Essa matriz específica especificou um tipo de valor de String, é permitido armazenar apenas valores de String.

Existem várias propriedades da matriz, como:

- Para verificar se a matriz possui elementos (se a matriz estiver vazia ou não)

Propriedade isEmpty (Boolean) para verificar se a propriedade count é igual a 0:

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

- Acrescentando (adicionando) elementos na matriz

Você pode adicionar um novo item ao final de uma matriz chamando o método append (_ :) da matriz:

groceryList.append("Flour")

groceryList agora contém 3 itens.

Como alternativa, acrescente uma matriz de um ou mais itens compatíveis ao operador de atribuição de adição (+ =):

groceryList += ["Baking Powder"]

groceryList agora contém 4 itens

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

groceryList agora contém 7 itens

abdômen
fonte
3

Conforme 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
fonte
2

você pode remover o conteúdo da matriz passando o índice da matriz ou remover todos

    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
fonte
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)
}

Uma resposta semelhante é fornecida, mas isso não funciona para a versão mais recente do Swift (Swift 5), então aqui está a resposta atualizada. Espero que ajude! :)

Abdullah Ajmal
fonte
1

Iniciando uma matriz com uma contagem predefinida:

Array(repeating: 0, count: 10)

Costumo usar isso para mapear instruções em que preciso de um número especificado de objetos simulados. Por exemplo,

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

thexande
fonte
0

Compatível com: Xcode 6.0.1+

Você pode criar uma matriz vazia especificando o tipo de elemento da sua matriz na declaração.

Por exemplo:

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

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

Exemplo da página de desenvolvedor da Apple (Matriz):

Espero que isso ajude alguém que tropeça nesta página.

CrazyOne
fonte