2017-09-04 79 views
0

基本上,我有一個數組,我希望它在按下按鈕時被轉移到標籤。我遇到的主要問題是我不能想出辦法把一旦已經打印從數組列表中隨機打印一個沒有重複的字符串

這裏的陣列不能複製的東西是我的代碼

@IBOutlet weak var truthspot: UILabel! 

@IBAction func truthclick(_ sender: Any) { 

    let array = ["pasta", "boop", "test1", "test2"] 
    let randomIndex = Int(arc4random_uniform(UInt32(array.count))) 

    truthspot.text = (array[randomIndex]) 
+1

一旦它打印出來,如何除去'array'中的項目? – Larme

+0

超級快捷noob在這裏,你的意思只是打印「randomIndex」?在'truthspot.text ='後面加上'array.remove(at:randomIndex)' – vape

+0

。這樣它就不會再出現在數組和下一個隨機數中。 – Larme

回答

0

片段你應該將array每次函數被調用時,在函數外部移除生成的索引處的元素。

var array = ["pasta", "boop", "test1", "test2"] 

@IBAction func truthclick(_ sender: Any) { 
    let randomIndex = Int(arc4random_uniform(UInt32(array.count))) 

    truthspot.text = (array[randomIndex]) 

    array.remove(at: randomIndex) 
} 
+2

您可能希望刪除AFTER'truthspot.text =',否則如果randomIndex是最後一個對象的索引,則會發生崩潰(出界),而在其他情況下,您將得到錯誤的值。 – Larme

+0

@Larme你是對的;編輯我的答案。 – the4kman

+0

非常感謝你這是完美的! 有什麼辦法,我可以添加一個重啓循環到最後,所以應用程序不會崩潰? – vape

相關問題