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

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

extension Array { var shuffle:[Element] { var elements = self for index in 0.. [[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 el 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

Funcionó bien en 1.2, pero ahora no está funcionando en 2.0.

No sé cómo resolver esto.

Estás tratando de intercambiar un elemento consigo mismo, deberás realizar una comprobación para ver si no estás tratando de intercambiar un elemento en el mismo lugar de la matriz, así:

 extension Array { var shuffle:[Element] { var elements = self for index in 0.. [[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 } } 
    Intereting Posts