2015-12-25 35 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 ..我把整個第一個代碼和第二個代碼放在一個按鈕動作中嗎? –