2017-09-04 16 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

「アレイ」の項目を一度印刷すると、その項目が削除されますか? – Larme

+0

ここにスーパースウィフトnoobは、単に "randomIndex"を印刷することを意味しますか? 'truthspot.text ='の直後に – vape

+0

'array.remove(at:randomIndex)'があります。この方法では、配列内と次のランダムでは表示されなくなります。 – 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

関連する問題