Swift 2 arc4random

Swift 2 arch4random

在我的应用程序中,我使用类似这样的方法在我的标签上获取随机文本,除了在我的主要 let randomNumber 代码中,在 xCode 中,它有超过 300 个案例,要粘贴的太多了在这里。:

let randomNumber = Int(arc4random_uniform(23))
var textLabel = "" as NSString
switch (randomNumber){
case 1:
    textLabel = "Kim."
    break
case 2:
    textLabel = "Phil."
    break
case 3:
    textLabel = "Tom"
    break
case 4:
    textLabel = "Jeff"
    break
default:
    textLabel = "Austin"
}
self.randomLabel.text = textLabel as String

但问题是,有时它会在标签上显示相同的文字 5-6 次,而其他情况甚至还没有使用,因为它随机选择。那么我怎么能随机选择,但是如果case example case 1已经显示出来了,它不会再出现,直到所有其他的case都显示出来。

使用名称数组而不是巨大的开关盒:

var names = ["Kim.", "Phil.", "Tom", "Jeff", "Austin"] // and all your remaining names
let originalNames = names

func getRandomName() -> String {
    if (names.count == 0) {
        names = originalNames
    }
    let randomNumber = Int(arc4random_uniform(UInt32(names.count)))
    return names.removeAtIndex(randomNumber)
}

这可确保在重新开始之前打印每个名称。示例输出为:

Tom, Kim., Austin, Phil., Jeff

然后又开始了

Austin, Jeff, Phil. ...

最后,将如下内容放在适合您需要的地方:

self.randomLabel.text = getRandomName()