Supposons que j'ai un tableau, par exemple:
var myArray = ["Steve", "Bill", "Linus", "Bret"]
Et plus tard, je veux pousser/ajouter un élément à la fin du tableau, pour obtenir:
["Steve", "Bill", "Linus", "Bret", "Tim"]
Quelle méthode devrais-je utiliser?
Et que dire du cas où je veux ajouter un élément au avant du tableau? Y a-t-il un décalage constant dans le temps?
À partir de Swift 3/4 , cette opération est effectuée comme suit.
Pour ajouter un nouvel élément à la fin d'un tableau.
anArray.append("This String")
Pour ajouter un tableau différent à la fin de votre tableau.
anArray += ["Moar", "Strings"]
anArray.append(contentsOf: ["Moar", "Strings"])
Pour insérer un nouvel élément dans votre tableau.
anArray.insert("This String", at: 0)
Pour insérer le contenu d’un autre tableau dans votre tableau.
anArray.insert(contentsOf: ["Moar", "Strings"], at: 0)
Pour plus d’informations, reportez-vous au chapitre "Types de collection" de " Le Swift Langage de programmation " à partir de la page 110.
Vous pouvez également transmettre une variable et/ou un objet si vous le souhaitez.
var str1:String = "John"
var str2:String = "Bob"
var myArray = ["Steve", "Bill", "Linus", "Bret"]
//add to the end of the array with append
myArray.append(str1)
myArray.append(str2)
Pour les ajouter à l'avant:
//use 'insert' instead of append
myArray.insert(str1, atIndex:0)
myArray.insert(str2, atIndex:0)
//Swift 3
myArray.insert(str1, at: 0)
myArray.insert(str2, at: 0)
Comme d'autres l'ont déjà indiqué, vous ne pouvez plus utiliser '+ =' à partir de xCode 6.1
Pour ajouter à la fin, utilisez l'opérateur +=
:
myArray += ["Craig"]
myArray += ["Jony", "Eddy"]
Cet opérateur est généralement équivalent à la méthode append(contentsOf:)
. (Et dans les très anciennes versions Swift, vous pouvez ajouter des éléments uniques, pas uniquement d'autres collections du même type d'élément.)
Il y a aussi insert(_:at:)
pour l'insertion à n'importe quel index.
Si, par exemple, vous souhaitez une fonction pratique pour l'insertion au début, vous pouvez l'ajouter à la classe Array
avec un extension .
Utilisez les opérateurs + = et +:
extension Array {
}
func += <V> (inout left: [V], right: V) {
left.append(right)
}
func + <V>(left: Array<V>, right: V) -> Array<V>
{
var map = Array<V>()
for (v) in left {
map.append(v)
}
map.append(right)
return map
}
puis utilisez:
var list = [AnyObject]()
list += "hello"
list += ["hello", "world!"]
var list2 = list + "anything"
Voici une petite extension si vous souhaitez insérer au début du tableau sans perdre l'élément à la première position
extension Array{
mutating func appendAtBeginning(newItem : Element){
let copy = self
self = []
self.append(newItem)
self.appendContentsOf(copy)
}
}
Dans Swift 4.1 et Xcode 9.4.1
Nous pouvons ajouter des objets à Array essentiellement de deux manières
let stringOne = "One"
let strigTwo = "Two"
let stringThree = "Three"
var array:[String] = []//If your array is string type
Type 1)
//To append elements at the end
array.append(stringOne)
array.append(stringThree)
Type 2)
//To add elements at specific index
array.insert(strigTwo, at: 1)
Si vous voulez ajouter deux tableaux
var array1 = [1,2,3,4,5]
let array2 = [6,7,8,9]
let array3 = array1+array2
print(array3)
array1.append(contentsOf: array2)
print(array1)
Pour ajouter au solutions suggérant append
, il est utile de savoir qu’il s’agit d’une opération à temps constant amorti dans nombreux cas:
Complexité: Amortisé O(1) sauf si la mémoire de stockage de l’individu est partagée avec un autre tableau actif; O(count) si self n'emballe pas un NSArray ponté; sinon l'efficacité n'est pas spécifiée.
Je cherche un opérateur cons
like pour Swift. Il devrait renvoyer un nouveau tableau immuable avec l'élément ajouté à la fin, en temps constant, sans changer le tableau d'origine. Je n'ai pas encore trouvé de fonction standard pour cela. Je vais essayer de me rappeler de signaler si j'en trouve un!
À partir de la page 143 du Swift Langage de programmation:
Vous pouvez ajouter un nouvel élément à la fin d’un tableau en appelant la méthode append du tableau.
Vous pouvez également ajouter un nouvel élément à la fin d'un tableau avec l'opérateur d'affectation d'addition (+ =).
Extrait de: Apple Inc. "Le langage de programmation Swift." IBooks. https://itun.es/us/jEUH0.l
Si vous souhaitez ajouter un objet unique, vous pouvez développer Array struct
extension Array where Element: Equatable {
mutating func appendUniqueObject(object: Generator.Element) {
if contains(object) == false {
append(object)
}
}
}
Vous pourriez utiliser
Myarray.insert("Data #\(index)", atIndex: index)
Si le tableau est NSArray, vous pouvez utiliser la fonction adding
pour ajouter un objet à la fin du tableau, comme ceci:
Swift 4.2
var myArray: NSArray = []
let firstElement: String = "First element"
let secondElement: String = "Second element"
// Process to add the elements to the array
myArray.adding(firstElement)
myArray.adding(secondElement)
Résultat:
print(myArray)
// ["First element", "Second element"]
C'est un moyen très simple, salutations!