斯威夫特2 arch4random [英] Swift 2 arch4random
问题描述
在我的应用程序中,我使用类似的方式在标签上获取随机文本,但在我的主要 let randomNumber
代码中,xCode中有300多种情况,
In my application, I use something like this to get random text on my label, except in my main let randomNumber
code, in xCode, it has over 300 cases, to much to paste in here.:
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次,而其他情况甚至没有使用,因为它是随机选择的。因此,我该如何随机选择,但是如果案例示例案例1已经显示,它将不会再次显示,直到显示了所有其他案例。
But the problem is, that sometimes it shows the same text on the label 5-6 times, and other cases is not even used yet, because it choose randomly. So how can I choose randomly, but if case example case 1 is already shown, it wont show up again, until all other cases has been shown.
推荐答案
具有一个名称数组,而不是一个巨大的切换用例:
Have an array of Names instead of a gigantic switch 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)
}
这可以确保每个名称在开始之前就被打印从头开始。示例输出为:
This ensures every name gets printed before starting from the beginning again. The sample output is:
Tom,Kim。,Austin,Phil。,Jeff
Tom, Kim., Austin, Phil., Jeff
,然后重新开始
奥斯汀,杰夫,菲尔。 ...
Austin, Jeff, Phil. ...
最后在需要的地方放置以下内容:
Finally put something like the following wherever it fits your need:
self.randomLabel.text = getRandomName()
这篇关于斯威夫特2 arch4random的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!