Wie erstelle ich ein leeres Array in Swift?

154

Ich bin wirklich verwirrt mit der Art und Weise, wie wir in Swift ein Array erstellen. Können Sie mir bitte sagen, wie viele Möglichkeiten es gibt, ein leeres Array mit einigen Details zu erstellen?

Inuyasha
quelle
9
var myArray: [String] = []
Leo Dabus
Was soll ich also tun, wenn ich ein Objekt in meinem Array speichern möchte?
Inuyasha
var myArray: [AnyObject] = []
Leo Dabus

Antworten:

294

Bitte schön:

var yourArray = [String]()

Das Obige funktioniert auch für andere Typen und nicht nur für Zeichenfolgen. Es ist nur ein Beispiel.

Werte hinzufügen

Ich nehme an, Sie möchten irgendwann einen Wert hinzufügen!

yourArray.append("String Value")

Oder

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

Durch Einfügen hinzufügen

Sobald Sie einige Werte haben, können Sie neue Werte einfügen, anstatt sie anzuhängen. Wenn Sie beispielsweise neue Objekte am Anfang des Arrays einfügen möchten (anstatt sie an das Ende anzuhängen):

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

Oder Sie können Variablen verwenden, um Ihre Einfügung flexibler zu gestalten:

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

Möglicherweise möchten Sie eventuell etwas entfernen

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

Das Obige funktioniert hervorragend, wenn Sie wissen, wo sich der Wert im Array befindet (dh wenn Sie den Indexwert kennen). Da die Indexwerte bei 0 beginnen, befindet sich der zweite Eintrag bei Index 1.

Werte entfernen, ohne den Index zu kennen

Aber was ist, wenn Sie es nicht tun? Was ist, wenn yourOtherArray Hunderte von Werten hat und Sie nur den Wert entfernen möchten, der "RemoveMe" entspricht?

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

Damit sollten Sie loslegen!

Dave G.
quelle
Ich bin mir nicht sicher, warum diese Antwort die meisten Stimmen hat. Es beantwortet eine ganze Reihe von Fragen, die das OP nie gestellt hat, bietet jedoch nur eine Möglichkeit, ein leeres Array zu erstellen, wenn die Frage "Bitte sagen Sie mir, wie viele Möglichkeiten es gibt, ein leeres Array zu erstellen" lautet.
Kal
27
var myArr1 = [AnyObject]()

kann jedes Objekt speichern

var myArr2 = [String]()

kann nur Zeichenfolge speichern

Vichhai
quelle
Kannst
24

Du könntest benutzen

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

Swift 3

Es gibt drei (3) Möglichkeiten, ein leeres Array in Swift zu erstellen, und eine Kurzsyntaxmethode wird immer bevorzugt.

Methode 1: Kurzsyntax

var arr = [Int]()

Methode 2: Array-Initialisierer

var arr = Array<Int>()

Methode 3: Array mit einem Array-Literal

var arr:[Int] = []

Methode 4: Das Guthaben geht an @BallpointBen

var arr:Array<Int> = []
Lorem Ipsum Dolor
quelle
1
Oder var arr: Array<Int> = []. [T]ist nur eine Abkürzung fürArray<T>
BallpointBen
@XinyangLi warum wird die Kurzschrift-Syntax bevorzugt? Gibt es einen Unterschied in der Kompilierungszeit zwischen diesen vier Möglichkeiten?
KlimczakM
20

Es gibt zwei Möglichkeiten, ein Array schnell zu erstellen / zu initialisieren.

var myArray = [Double]()

Dies würde eine Reihe von Doppelbildern erzeugen.

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

Dies würde ein Array von 5 Doppelwerten erzeugen, die alle mit dem Wert 2,0 initialisiert werden.

Aaron
quelle
Danke, kann ich so deklarieren `var myArray = [AnyObject] ()`?
Inuyasha
Ja, das ergibt ein Array von 'AnyObject', mit dem Sie so ziemlich alles einfügen können. Wenn Sie ein solches Array nicht benötigen, ist es besser, ihm einen bestimmten Wert wie 'var myArray = [String] ()' zu geben.
Aaron
Hinweis Swift 4 änderte die Syntax zum Initialisieren des Arrays mit sich wiederholenden Werten wie folgt: var myDoubles = [Double](repeating: 2.0, count: 5)- Beachten Sie die Änderung der Reihenfolge der Parameter und die Änderung der Bezeichnung von repeatedValuetorepeating
HirdayGupta
8

Wenn Sie ein leeres Array vom Typ String deklarieren möchten, können Sie dies auf 5 verschiedene Arten tun: -

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

Array eines beliebigen Typs: -

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

Array vom Typ Integer: -

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

Hier sind einige allgemeine Aufgaben in Swift 4, die Sie als Referenz verwenden können, bis Sie sich an die Dinge gewöhnt haben.

    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
quelle
3

Array in Swift wird als ** Array <Element> ** geschrieben, wobei Element der Wertetyp ist, den das Array speichern darf.

Das Array kann wie folgt initialisiert werden:

let emptyArray = [String]()

Es zeigt, dass es sich um ein Array vom Typ string handelt

Der Typ der Variable emptyArray wird vom Typ des Initialisierers als [String] abgeleitet.

Zum Erstellen des Arrays vom Typ string mit Elementen

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

Die Einkaufsliste wurde mit zwei Elementen initialisiert

Die GroceryList-Variable wird als "Array von Zeichenfolgenwerten" deklariert. als [ ] geschrieben. Dieses bestimmte Array hat einen Werttyp von String angegeben. Es dürfen nur String-Werte gespeichert werden.

Es gibt verschiedene Eigenschaften von Arrays wie:

- Um zu überprüfen, ob das Array Elemente enthält (ob das Array leer ist oder nicht)

isEmpty-Eigenschaft (Boolean) zum Überprüfen, ob die count-Eigenschaft gleich 0 ist:

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

- Anhängen (Hinzufügen) von Elementen im Array

Sie können ein neues Element am Ende eines Arrays hinzufügen, indem Sie die Methode append (_ :) des Arrays aufrufen:

groceryList.append("Flour")

Die Einkaufsliste enthält jetzt 3 Artikel.

Alternativ können Sie ein Array mit einem oder mehreren kompatiblen Elementen an den Additionszuweisungsoperator anhängen (+ =):

groceryList += ["Baking Powder"]

Die Einkaufsliste enthält jetzt 4 Artikel

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

Die Einkaufsliste enthält jetzt 7 Artikel

Abs
quelle
3

Gemäß 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
quelle
2

Sie können den Array-Inhalt durch Übergeben des Array-Index entfernen oder Sie können alle entfernen

    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 Kumar
quelle
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)
}

Eine ähnliche Antwort wird gegeben, aber das funktioniert nicht für die neueste Version von Swift (Swift 5). Hier ist die aktualisierte Antwort. Ich hoffe es hilft! :) :)

Abdullah Ajmal
quelle
1

Initiieren eines Arrays mit einer vordefinierten Anzahl:

Array(repeating: 0, count: 10)

Ich verwende dies oft zum Zuordnen von Anweisungen, bei denen ich eine bestimmte Anzahl von Scheinobjekten benötige. Beispielsweise,

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

thexande
quelle
0

Kompatibel mit: Xcode 6.0.1+

Sie können ein leeres Array erstellen, indem Sie den Elementtyp Ihres Arrays in der Deklaration angeben.

Beispielsweise:

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

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

Beispiel von der Apple-Entwicklerseite (Array):

Hoffe das hilft jedem, der auf diese Seite stolpert.

Ein Verrückter
quelle