Tôi có phần mở rộng này sẽ tạo ra một mảng mới mà có nhóm các mảng ngẫu nhiên từ mảng:lỗi nghiêm trọng: trao đổi một vị trí với bản thân không được hỗ trợ với Swift 2.0
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
}
}
Và tôi đang sử dụng nó như này:
let mainArr = Array(1...60)
let suffeldArr = mainArr.shuffle.groupOf(10)
print(suffeldArr)
Và nó sẽ in như:
[[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]]
Nhưng nó đem lại cho tôi một lỗi lúc chạy tim e ở dòng này:
swap(&elements[index], &elements[ Int(arc4random_uniform(UInt32(elements.count-index)))+index ])
Mà nói:
fatal error: swapping a location with itself is not supported
Nó được làm việc tốt trong 1.2 nhưng bây giờ nó không được làm việc trong 2.0.
Tôi không biết cách giải quyết vấn đề này.
Note rằng mã trong http://stackoverflow.com/a/24029847/1187415 đã được cập nhật để khắc phục vấn đề này: http://stackoverflow.com/questions/24026510/how-do-i-shuffle-an-array-in -swift/24029847 # comment52863556_24029847 –
Cảm ơn ... @MartinR –