Предположим, у меня есть массив, например:
var myArray = ["Steve", "Bill", "Linus", "Bret"]
А позже я хочу нажать / добавить элемент в конец указанного массива, чтобы получить:
["Steve", "Bill", "Linus", "Bret", "Tim"]
Какой метод я должен использовать?
А как насчет случая , когда я хочу , чтобы добавить элемент в передней части массива? Есть ли постоянное время без смещения?
let array = [Int]()
вы никогда не сможете сказать, чтоarray[0] = 42
он выдаст ошибку индекса вне диапазона . Вы должны использоватьarray.append(42)
. Почему ты не можешь подписаться? По той же причине вы не можете сделатьletters[3] = d
дляlet letters = [a,b,c]
. Третий индекс не существует, как массив [0] перед значением!Ответы:
По состоянию на Swift 3/4/5 это делается следующим образом.
Чтобы добавить новый элемент в конец массива.
Чтобы добавить другой массив в конец вашего массива.
Чтобы вставить новый элемент в ваш массив.
Чтобы вставить содержимое другого массива в ваш массив.
Дополнительную информацию можно найти в главе «Типы коллекций» « Язык программирования Swift », начиная со стр. 110.
источник
splice
переименуйтеinsertContentsOf
в Swift 2.Вы также можете передать переменную и / или объект, если хотите.
Чтобы добавить их на фронт:
Как уже говорили другие, вы больше не можете использовать '+ =' с xCode 6.1
источник
.prepend()
функции, вставка в голову, кажется, хороший подходЧтобы добавить в конец, используйте
+=
оператор:Этот оператор обычно эквивалентен
append(contentsOf:)
методу. (И в действительно старых версиях Swift можно добавлять отдельные элементы, а не только другие коллекции одного и того же типа элемента.)Там также
insert(_:at:)
для вставки в любой индекс.Если, скажем, вам нужна удобная функция для вставки в начале, вы можете добавить ее в
Array
класс с расширением .источник
myArray
имеет типArray
, то первая строка неверна.+=
Оператор может быть использован только если обаmyArray
и правый операнд типаArray
.+=
иappend
эквивалентны не является правильным, бывший предполагает создание временного массива , который будет отброшен , как только оператор - функция потребляет его.Используйте операторы + = и +:
затем используйте:
источник
var copy = left
а затем добавлятьcopy.append(right)
достаточно. В Swift массивы являются типами значений, а не ссылочными типами.Вот небольшое расширение, если вы хотите вставить в начало массива, не теряя элемент в первой позиции
источник
В Swift 4.1 и Xcode 9.4.1
Мы можем добавить объекты в массив в основном двумя способами
Тип 1)
Тип 2)
Если вы хотите добавить два массива
источник
Со страницы 143 языка программирования Swift:
Выдержка из: Apple Inc. «Язык программирования Swift». интерактивные книги. https://itun.es/us/jEUH0.l
источник
Чтобы добавить к предлагаемым решениям
append
, полезно знать, что во многих случаях это амортизированная операция с постоянным временем :Я ищу
cons
оператора как Swift. Он должен возвращать новый неизменный массив с прикрепленным элементом в конце, в постоянное время, без изменения исходного массива. Я еще не нашел стандартную функцию, которая делает это. Я постараюсь не забыть сообщить, если я найду один!источник
Вы могли бы использовать
источник
Если вы хотите добавить уникальный объект, вы можете развернуть структуру Array
источник
Если массив NSArray, вы можете использовать
adding
функцию для добавления любого объекта в конец массива, например так:Swift 4.2
Результат :
Это очень простой способ, с уважением!
источник
В Swift 4.2: вы можете использовать
или
источник
Пример: student = ["Ben", "Ivy", "Jordell"]
1) Чтобы добавить отдельные элементы в конец массива, используйте append (_ :)
students.append(\ "Maxime" )
2) Добавить несколько элементов одновременно, передав другой массив или последовательность любого вида в метод append (contentsOf :)
students.append(contentsOf: ["Shakia" , "William"])
3) Добавить новые элементы в середину массива, используя метод insert (_: at :) для отдельных элементов
students.insert("Liam" , at:2 )
4) Использование insert (contentsOf: at :) для вставки нескольких элементов из другой коллекции или литерала массива
students.insert(['Tim','TIM' at: 2 )
источник