swift swift2 fatal-error ios9

error fatal: el intercambio de una ubicación consigo mismo no es compatible con Swift 2.0



swift2 fatal-error (1)

Está intentando intercambiar un elemento consigo mismo, deberá realizar una comprobación para ver si no está intentando intercambiar un elemento en el mismo lugar de la matriz, de la siguiente manera:

extension Array { var shuffle:[Element] { var elements = self for index in 0..<elements.count { let newIndex = Int(arc4random_uniform(UInt32(elements.count-index)))+index if index != newIndex { // Check if you are not trying to swap an element with itself swap(&elements[index], &elements[newIndex]) } } return elements } func groupOf(n:Int)-> [[Element]] { var result:[[Element]]=[] for i in 0...(count/n)-1 { var tempArray:[Element] = [] for index in 0...n-1 { tempArray.append(self[index+(i*n)]) } result.append(tempArray) } return result } }

Tengo esta extensión que creará una nueva matriz que tiene un grupo de matrices al azar de una matriz dada:

extension Array { var shuffle:[Element] { var elements = self for index in 0..<elements.count { swap(&elements[index], &elements[ Int(arc4random_uniform(UInt32(elements.count-index)))+index ]) } return elements } func groupOf(n:Int)-> [[Element]] { var result:[[Element]]=[] for i in 0...(count/n)-1 { var tempArray:[Element] = [] for index in 0...n-1 { tempArray.append(self[index+(i*n)]) } result.append(tempArray) } return result } }

Y lo estoy usando así:

let mainArr = Array(1...60) let suffeldArr = mainArr.shuffle.groupOf(10) print(suffeldArr)

Y se imprimirá como:

[[10 random element between 1 to 60], [10 random element between 1 to 60], [10 random element between 1 to 60], [10 random element between 1 to 60], [10 random element between 1 to 60], [10 random element between 1 to 60]]

Pero me está dando un error en tiempo de ejecución en esta línea:

swap(&elements[index], &elements[ Int(arc4random_uniform(UInt32(elements.count-index)))+index ])

Que dice:

error fatal: no se admite el intercambio de una ubicación consigo mismo

Funcionaba bien en 1.2 pero ahora no funciona en 2.0.

No se como resolver esto.