2017-03-18 2 views
-2

Ich versuche, eine App, die die Wörter und Sätze anzeigen wird, aber es ist oft das gleiche Wort oder Satz. Wie mache ich, um die gleichen Wörter nicht zu wiederholen.Ich möchte nicht die gleichen Worte in swift 3 wiederholen, wie mache ich das?

@IBOutlet weak var label: UILabel! 


override func viewDidLoad() { 
    super.viewDidLoad() 

} 

var array = ["word 1", 
       "Word 2", 
       "Word 3", 
       "Word 4", 
       "Word 5", 
       "Word 6", 
       ] 

@IBAction func randomWord(_ sender: Any) { 
    changeWord() 
} 



func changeWord() { 
    let randomWordGen = Int(arc4random_uniform(UInt32(array.count))) 
    label.text = array[randomWordGen] 
} 
+0

Entfernen Sie das generierte Wort aus 'array', damit es bei der nächsten Wortwahl nicht verfügbar ist. Wiederholen Sie dies, bis 'array' leer ist. – vacawama

+0

dann wie mache ich das? – codelovers

Antwort

0

ändern func dazu:

func changeWord() { 
    guard !array.isEmpty else { 
      // list is empty 
      return 
    } 
    let randomInt = Int(arc4random_uniform(UInt32(array.count))) 
    label.text = array.remove(at: randomInt) 
} 

die .remove(at:) Methode entfernt das Element aus dem Array in bestimmten Int und gibt es zurück.

EDIT: wie LeoDabus darauf hingewiesen. Es ist in der Tat langsamer, den Array-Zählwert mit Null zu vergleichen, als mit isEmpty und danach auf den Zählwert zuzugreifen. Die Funktion wurde aktualisiert.

+0

danke! es hat perfekt funktioniert! Es ist möglich, einen Text "Keine Wörter mehr" anzuzeigen und dann von vorne zu beginnen? – codelovers

Verwandte Themen