Załóżmy, że mam tablicę, na przykład:
var myArray = ["Steve", "Bill", "Linus", "Bret"]
A później chcę przesunąć / dołączyć element na końcu wspomnianej tablicy, aby uzyskać:
["Steve", "Bill", "Linus", "Bret", "Tim"]
Jakiej metody powinienem użyć?
A co z przypadkiem, w którym chcę dodać element z przodu tablicy? Czy jest stałe przesunięcie czasu?
let array = [Int]()
, nigdy nie możesz powiedzieć, żearray[0] = 42
spowoduje błąd indeksu poza zakresem . Powinieneś użyćarray.append(42)
. Dlaczego nie możesz się zapisać? Z tego samego powodu nie można zrobićletters[3] = d
dlalet letters = [a,b,c]
. Trzeci indeks nie istnieje, podobnie jak tablica [0] przed wartością!Odpowiedzi:
Począwszy od Swift 3/4/5 , odbywa się to w następujący sposób.
Aby dodać nowy element na końcu tablicy.
Aby dołączyć inną tablicę na końcu tablicy.
Aby wstawić nowy element do tablicy.
Aby wstawić zawartość innej tablicy do tablicy.
Więcej informacji można znaleźć w rozdziale „Typy kolekcji” w „ Szybkim języku programowania ”, począwszy od strony 110.
źródło
splice
zmień nazwę nainsertContentsOf
w Swift 2.Możesz także przekazać zmienną i / lub obiekt, jeśli chcesz.
Aby dodać je z przodu:
Jak już powiedzieli inni, nie można już używać „+ =” od wersji xCode 6.1
źródło
.prepend()
funkcji wstawianie w głowę wydaje się być dobrym podejściemAby dodać na końcu, użyj
+=
operatora:Ten operator jest zasadniczo równoważny
append(contentsOf:)
metodzie. (A w naprawdę starych wersjach Swift można było dodawać pojedyncze elementy, a nie tylko inne kolekcje tego samego typu.)Istnieje również
insert(_:at:)
do wstawiania w dowolnym indeksie.Jeśli, powiedzmy, chcesz na początku funkcji wygody wstawiania, możesz dodać ją do
Array
klasy z rozszerzeniem .źródło
myArray
jest typuArray
, to pierwszy wiersz jest niepoprawny.+=
Operator może być używany tylko wtedy, gdy obamyArray
i prawy operand są typuArray
.+=
iappend
są one równoważne, nie jest poprawne, to pierwsze polega na utworzeniu tymczasowej tablicy, która zostanie odrzucona, gdy tylko funkcja operatora ją wykorzysta.Użyj operatorów + = i +:
następnie użyj:
źródło
var copy = left
a następnie dołączyćcopy.append(right)
. W Swift tablice są typami wartości, a nie typami referencyjnymi.Oto małe rozszerzenie, jeśli chcesz wstawić na początku tablicy bez utraty elementu na pierwszej pozycji
źródło
W Swift 4.1 i Xcode 9.4.1
Możemy dodawać obiekty do tablicy zasadniczo na dwa sposoby
Typ 1)
Typ 2)
Jeśli chcesz dodać dwie tablice
źródło
Od strony 143 Swift Programming Language:
Fragment: Apple Inc. „Swift Programming Language”. iBooks. https://itun.es/us/jEUH0.l
źródło
Aby dodać do sugerujących rozwiązania
append
, warto wiedzieć, że w wielu przypadkach jest to amortyzowana operacja o stałym czasie :Szukam
cons
operatora podobnego do Swift. Powinien zwrócić nową niezmienną tablicę z elementem przyczepionym na końcu, w stałym czasie, bez zmiany pierwotnej tablicy. Nie znalazłem jeszcze standardowej funkcji, która to robi. Spróbuję pamiętać, aby zgłosić się, jeśli go znajdę!źródło
Możesz użyć
źródło
Jeśli chcesz dołączyć unikalny obiekt, możesz rozwinąć Array struct
źródło
Jeśli tablica to NSArray, możesz użyć
adding
funkcji, aby dodać dowolny obiekt na końcu tablicy, w następujący sposób:Szybki 4.2
Wynik :
To bardzo prosty sposób, pozdrawiam!
źródło
W Swift 4.2: możesz używać
lub
źródło
Przykład: studenci = [„Ben”, „Ivy”, „Jordell”]
1) Aby dodać pojedyncze elementy na końcu tablicy, użyj append (_ :)
students.append(\ "Maxime" )
2) Dodaj wiele elementów jednocześnie, przekazując kolejną tablicę lub dowolną sekwencję do metody append (contentOf :)
students.append(contentsOf: ["Shakia" , "William"])
3) Aby dodać nowe elementy w środku tablicy za pomocą metody insert (_: at :) dla pojedynczych elementów
students.insert("Liam" , at:2 )
4) Za pomocą insert (contentOf: at :) wstawić wiele elementów z innej kolekcji lub literału tablicowego
students.insert(['Tim','TIM' at: 2 )
źródło