我正在尝试使用Swift 4.2中可用的直接交换方法来交换存储模式数据的数组的值,但是它崩溃了。有人可以建议我为什么这不起作用吗?
if modalArray.count >= 2{
swap(&modalArray[0], &modalArray[1])
}
我得到的错误是:
线程1:同时访问0x600001c4cb08,但进行了修改
需要独占访问权
当我跳到交换时,我得到了说它应该起作用的定义。请参考下图。
最佳答案
尝试使用swapAt(_:_:)
方法
if modalArray.count >= 2{
modalArray.swapAt(0, 1)
}
关于您的为何不起作用的原因,不应在Mutable Collections上使用
swap
。Apple文档
swap
这两个参数不能互为别名。要交换可变集合的两个元素,请使用该集合的swapAt(::)方法而不是此函数。