2015-12-25 77 views
1

在我的应用程序,我用这样的事情,让我的标签上随机文本,除了在我的主要let randomNumber代码,在Xcode中,有超过300个的情况下,以多在这里贴:斯威夫特2 arch4random

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,它将不会再次显示,直到显示所有其他案例。

+0

当您运行switch语句? –

+0

@DylanIreland - (?)在同一功能 –

+0

'VAR myNames = [ “金”, “菲尔”, “汤姆”, “杰夫”, “奥斯汀”]'**其次是线** '让randomName = myNames.removeAtIndex(int(arc4random_uniform(UInt32(myNames.count-1))))' – dfri

回答

0

有名称,而不是一个巨大的开关壳体的数组:

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) 
} 

这确保每名被再次从开头开始之前打印。样本输出是:。

汤姆,金,奥斯汀,菲尔,杰夫

,然后再次启动

奥斯汀,杰夫,菲尔。 ...

最后把类似的东西无论它适合你的需要:

self.randomLabel.text = getRandomName() 
+0

我可以使用整个数组的函数,另一个函数只显示数组中的前3个名字? –

+0

@ RoduckNickes不知道你的意思 – luk2302

+0

Nvm ..我把整个第一个代码和第二个代码放在一个按钮动作中吗? –