423 Stimmen

Fügen Sie ein Element zu einem Array in Swift hinzu

Angenommen, ich habe ein Array, zum Beispiel:

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

Und später möchte ich ein Element am Ende dieses Arrays hinzufügen, um zu erhalten:

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

Welche Methode sollte ich verwenden?

Und was ist mit dem Fall, dass ich ein Element am Anfang des Arrays hinzufügen möchte? Gibt es eine konstante Zeit unshift?

729voto

Mick MacCallum Punkte 126843

Ab Swift 3 / 4 / 5 erfolgt dies wie folgt.

Um ein neues Element am Ende eines Arrays hinzuzufügen.

anArray.append("Dieser String")

Um ein anderes Array am Ende Ihres Arrays anzuhängen.

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

Um ein neues Element in Ihr Array einzufügen.

anArray.insert("Dieser String", anPosition: 0)

Um den Inhalt eines anderen Arrays in Ihr Array einzufügen.

anArray.insert(contentsOf: ["Mehr", "Strings"], anPosition: 0)

Weitere Informationen finden Sie im Kapitel "Collection Types" des Buches "The Swift Programming Language", ab Seite 110.

25voto

Steve Quatrale Punkte 360

Sie können auch eine Variable und/oder ein Objekt übergeben, wenn Sie möchten.

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

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

//fügen Sie am Ende des Arrays mit append hinzu
myArray.append(str1)
myArray.append(str2)

Um sie am Anfang hinzuzufügen:

//verwenden Sie 'insert' anstelle von append
myArray.insert(str1, atIndex:0)
myArray.insert(str2, atIndex:0)

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

Wie bereits von anderen erwähnt, können Sie ab xCode 6.1 nicht mehr '+=' verwenden.

21voto

rickster Punkte 121640

Um es am Ende hinzuzufügen, verwenden Sie den += Operator:

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

Der Operator ist im Allgemeinen äquivalent zur append(contentsOf:) Methode. (Und in wirklich alten Swift-Versionen könnte einzelne Elemente anhängen, nicht nur andere Sammlungen des gleichen Elementtyps.)

Es gibt auch insert(_:at:) um an beliebiger Stelle einzufügen.

Wenn Sie beispielsweise eine Hilfsfunktion für das Einfügen am Anfang möchten, könnten Sie sie mit einer Erweiterung zur Array Klasse hinzufügen.

13voto

Aqib Mumtaz Punkte 4828

Verwenden Sie die += und + Operatoren:

extension Array {

}

func += (inout left: [V], right: V) {
    left.append(right)
}

func + (left: Array, right: V) -> Array
{
    var map = Array()
    for v in left {
        map.append(v)
    }

    map.append(right)

    return map
}

dann verwenden Sie:

var list = [AnyObject]()
list += "hello" 
list += ["hello", "world!"]
var list2 = list + "anything"

7voto

mahan Punkte 9557

Verwenden Sie Deque anstelle von Array

Der Hauptvorteil von Deque gegenüber Array ist, dass es effiziente Einfügungen und Entfernungen an beiden Enden unterstützt.

https://swift.org/blog/swift-collections/

var names:Deque = ["Steve", "Bill", "Linus", "Bret"]

Füge Tim am Ende von names hinzu

names.append("Tim")

Füge Tim am Anfang von names hinzu

names.prepend("John")

Entferne das erste Element von names

names.popFirst() // "John"

Entferne das letzte Element von names

names.popLast() // "Tim"

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X