addObjectsFromArray 到现有数组的开头

addObjectsFromArray to the beginning of an existing array

我无法将现有数组添加到另一个数组的开头。 例如: MutableID 数组包含 1,2,3,4,5 & idArray 数组包含 6,7,8

self.MutableID.addObjectsFromArray(idArray as [AnyObject])
//currently puts values to the end of the array not the beginning

此代码输出 1,2,3,4,5,6,7,8 但我希望它输出 6,7,8,1,2,3,4,5

我需要添加到 self.MutableID 开头的值 关于如何完成此操作有什么建议吗?

self.MutableID.insertContentsOf(idArray as [AnyObject], at: 0)

此题是 this question 的 Swift 版本,解决了 Objective-C 中的问题。

如果我们必须,无论出于何种原因,都使用Objective-C的NSArrayNSMutableArray,那么我们可以简单地使用Swift 翻译我那边的答案中的代码:

let range = NSMakeRange(0, newArray.count)
let indexes = NSIndexSet(indexesInRange: range)
oldArray.insertObjects(newArray as [AnyObject], atIndexes: indexes)

其中 oldArrayNSMutableArraynewArrayNSArrayNSMutableArray

或者另一种方法,附加并重新分配:

oldArray = newArray.arrayByAddingObjectsFromArray(oldArray as [AnyObject])

但最正确的做法是使用 Swift 数组类型,然后使用 insertContentsOf(_: Array, at: Int) 方法,如 所述。

NSMutableArray 有 insertObjects 方法。

self.MutableID.insertObjects(otherArray as [AnyObject], atIndexes: NSIndexSet(indexesInRange: NSMakeRange(0, otherArray.count)))

或者您可以将可变数组分配给 swift 数组并使用 insertContentsOf 方法 ;)

self.MutableID = NSMutableArray(array: [1,2,3,4])
var otherArray = NSMutableArray(array: [6,7,8,9])

var swiftArr : [AnyObject] = self.MutableID as [AnyObject]
swiftArr.insertContentsOf(otherArray as [AnyObject], at: 0)