斯威夫特2 arch4random [英] Swift 2 arch4random

查看:69
本文介绍了斯威夫特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 randomNumbercode, 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆