【发布时间】:2016-02-19 11:46:04
【问题描述】:
我正在尝试使用以下扩展名对我的数组进行洗牌:
extension Array {
var shuffled: [Element] {
guard count > 1 else { return self }
var elements = self
for index in indices {
let newIndex = Int(arc4random_uniform(UInt32(elements.count - index))) + index
guard index != newIndex else { continue }
swap(&elements[index], &elements[newIndex])
}
return elements
}
}
然后我使用此代码随机播放并获取我的 plist 中的前 20 个项目:
var questionsArray = [myPlistArray?.shuffled]
let shuffledQuestions = questionsArray.shuffle() // instance member cannot be used on type 'myViewController'
let first20 = questionsArray.prefix(20)
但是,我总是收到此错误: // 实例成员不能用于“myViewController”类型
有谁知道如何正确操作? 或者有谁知道我怎样才能洗牌 pList 项目并获得前 20 个项目?
我的问题与这个问题完全相同:How to return first 5 objects of Array in Swift?,但是,我的数据在 plist 字典文件中......
无论如何,我的 pList 文件是这样的:myPlistArray.plist
【问题讨论】: