Angenommen, ich habe ein Array, zum Beispiel:
var myArray = ["Steve", "Bill", "Linus", "Bret"]
Und später möchte ich ein Element an das Ende des Arrays verschieben / anhängen, um Folgendes zu erhalten:
["Steve", "Bill", "Linus", "Bret", "Tim"]
Welche Methode soll ich verwenden?
Und was ist mit dem Fall, in dem ich der Vorderseite des Arrays ein Element hinzufügen möchte ? Gibt es eine konstante Zeitverschiebung?
let array = [Int]()
, können Sie nie sagen, dassarray[0] = 42
es einen Indexfehler außerhalb des Bereichs gibt . Sie sollten verwendenarray.append(42)
. Warum kannst du nicht abonnieren? Aus dem gleichen Grund Sie nicht tun könnenletters[3] = d
fürlet letters = [a,b,c]
. Der 3. Index ist nicht vorhanden, ebenso wie Array [0] vor einem Wert!Antworten:
Ab Swift 3/4/5 erfolgt dies wie folgt.
So fügen Sie am Ende eines Arrays ein neues Element hinzu
So hängen Sie ein anderes Array an das Ende Ihres Arrays an
So fügen Sie ein neues Element in Ihr Array ein
So fügen Sie den Inhalt eines anderen Arrays in Ihr Array ein
Weitere Informationen finden Sie im Kapitel "Sammlungstypen" von " The Swift Programming Language " ab Seite 110.
quelle
splice
UmbenennunginsertContentsOf
in Swift 2.Sie können auch eine Variable und / oder ein Objekt übergeben, wenn Sie möchten.
So fügen Sie sie der Vorderseite hinzu:
Wie bereits erwähnt, können Sie ab xCode 6.1 '+ =' nicht mehr verwenden
quelle
.prepend()
Funktion, scheint das Einfügen am Kopf ein guter Ansatz zu seinVerwenden Sie zum Hinzufügen am Ende den
+=
Operator:Dieser Operator entspricht im Allgemeinen der
append(contentsOf:)
Methode. (Und in wirklich alten Swift-Versionen könnten einzelne Elemente angehängt werden, nicht nur andere Sammlungen desselben Elementtyps.)Es gibt auch
insert(_:at:)
zum Einfügen an einem beliebigen Index.Wenn Sie beispielsweise zu Beginn eine praktische Funktion zum Einfügen wünschen, können Sie sie der
Array
Klasse mit einer Erweiterung hinzufügen .quelle
myArray
es sich um einen Typ handeltArray
, ist die erste Zeile falsch. Der+=
Operator kann nur verwendet werden, wenn beidemyArray
und der richtige Operand vom Typ sindArray
.+=
undappend
äquivalent sind, ist nicht korrekt. Ersteres beinhaltet die Erstellung eines temporären Arrays, das verworfen wird, sobald die Operatorfunktion es verbraucht.Verwenden Sie die Operatoren + = und +:
dann benutze :
quelle
var copy = left
und dann Anhängencopy.append(right)
ist genug. In Swift sind Arrays Werttypen und keine Referenztypen.Hier ist eine kleine Erweiterung, wenn Sie am Anfang des Arrays einfügen möchten, ohne das Element an der ersten Position zu verlieren
quelle
In Swift 4.1 und Xcode 9.4.1
Wir können dem Array Objekte grundsätzlich auf zwei Arten hinzufügen
Typ 1)
Typ 2)
Wenn Sie zwei Arrays hinzufügen möchten
quelle
Ab Seite 143 der Swift-Programmiersprache:
Auszug aus: Apple Inc. "Die schnelle Programmiersprache". iBooks. https://itun.es/us/jEUH0.l
quelle
Um die vorgeschlagenen Lösungen
append
zu ergänzen , ist es nützlich zu wissen, dass dies in vielen Fällen eine amortisierte Operation mit konstanter Zeit ist:Ich suche einen
cons
ähnlichen Operator für Swift. Es sollte ein neues unveränderliches Array mit dem am Ende angehefteten Element in konstanter Zeit zurückgegeben werden, ohne das ursprüngliche Array zu ändern. Ich habe noch keine Standardfunktion gefunden, die dies tut. Ich werde versuchen, mich daran zu erinnern, mich zu melden, wenn ich einen finde!quelle
Du könntest benutzen
quelle
Wenn Sie ein eindeutiges Objekt anhängen möchten, können Sie die Array- Struktur erweitern
quelle
Wenn das Array NSArray ist, können Sie mit der
adding
Funktion ein beliebiges Objekt am Ende des Arrays hinzufügen, wie folgt :Swift 4.2
Ergebnis :
Das ist ein sehr einfacher Weg, Grüße!
quelle
In Swift 4.2: Sie können verwenden
oder
quelle
Beispiel: Studenten = ["Ben", "Ivy", "Jordell"]
1) Um einzelne Elemente am Ende eines Arrays hinzuzufügen, verwenden Sie den Anhang (_ :)
students.append(\ "Maxime" )
2) Fügen Sie mehrere Elemente gleichzeitig hinzu, indem Sie ein anderes Array oder eine Sequenz beliebiger Art an die Methode append (contentOf :) übergeben
students.append(contentsOf: ["Shakia" , "William"])
3) Hinzufügen neuer Elemente in der Mitte eines Arrays mithilfe der Methode insert (_: at :) für einzelne Elemente
students.insert("Liam" , at:2 )
4) Verwenden Sie insert (contentOf: at :), um mehrere Elemente aus einer anderen Sammlung oder einem anderen Array-Literal einzufügen
students.insert(['Tim','TIM' at: 2 )
quelle