如何在swift数组中交换元素?

Dha*_*esh 33 arrays nsmutablearray ios swift

我有一个简单的数组,如:

var cellOrder = [1,2,3,4]
Run Code Online (Sandbox Code Playgroud)

我想交换元素,比如假设第二个元素与第一个元素.

结果将是:

[2,1,3,4]
Run Code Online (Sandbox Code Playgroud)

我知道我们可以用exchangeObjectAtIndexNSMutableArray,但我想用快捷阵列.有没有办法用swift [Int]数组做同样的事情?

Rob*_*ier 60

用途swap:

var cellOrder = [1,2,3,4]
swap(&cellOrder[0], &cellOrder[1])
Run Code Online (Sandbox Code Playgroud)

或者,您可以将其指定为元组:

(cellOrder[0], cellOrder[1]) = (cellOrder[1], cellOrder[0])
Run Code Online (Sandbox Code Playgroud)

  • 在Swift 4中,它现在是`swapAt` (5认同)
  • 我在执行这个答案时遇到了问题。我在尝试交换值时遇到了这个特殊错误。“同时访问0x108e19918,但修改需要独占访问。” 使用“交换”对我来说效果更好。 (2认同)

hst*_*tdt 43

斯威夫特4

swapAt(_:_:):

cellOrder.swapAt(index0, index1)
Run Code Online (Sandbox Code Playgroud)

  • @basvk我认为它回答了这个问题 - 它展示了如何从数组中"交换两个元素".这是问题的有效答案(也是正确的). (3认同)
  • 是的,这是swift 4.0版本的有效答案. (2认同)

Her*_*ker 7

一种选择是:

cellOrder[0...1] = [cellOrder[1], cellOrder[0]]
Run Code Online (Sandbox Code Playgroud)