Add an element to an array in Swift
假设我有一个数组,例如:
1 | var myArray = ["Steve","Bill","Linus","Bret"] |
稍后,我想将一个元素推/附加到所述数组的末尾,以获得:
我应该使用什么方法?
如果我想在数组前面添加一个元素呢?有不变的时间吗?
从Swift 3/4开始,执行如下操作。
向数组末尾添加新元素。
1 | anArray.append("This String") |
将另一个数组附加到数组的末尾。
1 2 | anArray += ["Moar","Strings"] anArray.append(contentsOf: ["Moar","Strings"]) |
向数组中插入新元素。
1 | anArray.insert("This String", at: 0) |
将不同数组的内容插入到数组中。
1 | anArray.insert(contentsOf: ["Moar","Strings"], at: 0) |
更多信息可以在"swift编程语言"的"集合类型"一章中找到,从第110页开始。
如果需要,还可以传入变量和/或对象。
1 2 3 4 5 6 7 8 | 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) |
要将它们添加到前面:
1 2 3 4 5 6 7 | //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) |
正如其他人已经说过的,从Xcode6.1开始,您不能再使用"+="。
要添加到结尾,请使用
1 2 | myArray += ["Craig"] myArray += ["Jony","Eddy"] |
该运算符通常等价于
还有
例如,如果您希望在开头插入一个方便的函数,那么您可以用扩展名将它添加到
使用+=和+运算符:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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 } |
然后使用:
1 2 3 4 | var list = [AnyObject]() list +="hello" list += ["hello","world!"] var list2 = list +"anything" |
如果您希望在数组开始处插入而不在第一个位置丢失项,则可以使用小扩展
1 2 3 4 5 6 7 8 | extension Array{ mutating func appendAtBeginning(newItem : Element){ let copy = self self = [] self.append(newItem) self.appendContentsOf(copy) } } |
在Swift 4.1和Xcode 9.4.1中
我们可以用两种方法向数组添加对象
1 2 3 4 | let stringOne ="One" let strigTwo ="Two" let stringThree ="Three" var array:[String] = []//If your array is string type |
1型)
1 2 3 | //To append elements at the end array.append(stringOne) array.append(stringThree) |
2型)
1 2 | //To add elements at specific index array.insert(strigTwo, at: 1) |
如果要添加两个数组
1 2 3 4 5 6 7 | 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) |
除了建议使用
Complexity: Amortized O(1) unless self's storage is shared with another live array; O(count) if self does not wrap a bridged NSArray; otherwise the efficiency is unspecified.
我在找一个类似于
从Swift编程语言第143页:
You can add a new item to the end of an array by calling the array’s append method
Alternatively, add a new item to the end of an array with the addition assignment operator (+=)
摘自:苹果公司。"Swift编程语言。"iBooks。网址:https://itun.es/us/jeuh0.l
如果数组是nsarray,则可以使用
斯威夫特4.2
1 2 3 4 5 6 7 | 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) |
结果:
1 2 | print(myArray) // ["First element","Second element"] |
这是一个非常简单的方法,问候!
如果要附加唯一对象,可以展开数组结构
1 2 3 4 5 6 7 | extension Array where Element: Equatable { mutating func appendUniqueObject(object: Generator.Element) { if contains(object) == false { append(object) } } } |
你可以使用
1 | Myarray.insert("Data #\(index)", atIndex: index) |