Array durchlaufen und zufällig einen Wert ausgeben

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Array durchlaufen und zufällig einen Wert ausgeben

    Hallo.
    Ich bin sehr neu hier. Ich bin gerade dabei mal eine Mini-iPhone App zu machen (einfach mal um zu testen): ich habe momentan ein Label das den Inhalt einer Variable anzeigt. Ich habe einen Button der das Label anzeigt wen er gedrückt wird - also "drücken" zeigt an "ich bin ein Test". Jetzt möchte ich mehrere String in einem Array "sammeln" und zufällig ausgeben wenn mein Button gedrückt wird. Mein Array:

    Quellcode

    1. let Test: [String] = ["ich bin ein Test", "ich bin ein andere test","Test verhauen","und noch mehr Strings"]
    Day Array möchte ich nun druchlaufen und mir zufällig einen der Stings ausgeben lassen. Irgendwie werd dazu nicht fündig. Bin nur über arc4random... gestolpert das wohl etwas anders macht.
    Vielen Dank schon mal und Gruß
  • Danke für die schnelle Antwort. Orig. sieht das so aus bei mir:

    var Output: [String] = ["Ein Nerd... hehe","Ein Wusel","Eine Nerdin... haha"]

    Dann dein Vorschlag plus einer zusätzlichen Variablen (ich muss das Ergebnis ja irgendwo reinschreiben gehe ich von aus)

    var Test = arc4random_uniform(Output.count)

    Dann bekomme ich den Fehler: Instance member 'Output' cannot be used on type viewcontroller
  • Danke für die Anregungen. So läuft´s wie ich es wollte:

    Quellcode

    1. import UIKit
    2. class ViewController: UIViewController {
    3. var output: [String] = ["Ein Nerd... hehe",
    4. "Ein Wusel",
    5. "Eine Nerdin... haha",
    6. "Etwas Anderes",
    7. "Hm... sag du es mir"]
    8. var test = ""
    9. @IBOutlet weak var myLabel: UILabel!
    10. func changeLabel() {
    11. self.myLabel.text = test
    12. }
    13. @IBOutlet weak var QuestionOutlet: UIButton!
    14. override func viewDidLoad() {
    15. super.viewDidLoad()
    16. test = output[Int(arc4random_uniform(UInt32(output.count)))]
    17. myLabel.hidden = true
    18. }
    19. @IBAction func pressButton(sender: AnyObject) {
    20. changeLabel()
    21. myLabel.hidden = false
    22. QuestionOutlet.hidden = true
    23. }
    24. override func didReceiveMemoryWarning() {
    25. super.didReceiveMemoryWarning()
    26. }
    27. }
    Alles anzeigen
  • macmoonshine schrieb:

    arc4random_uniform liefert dir eine Ganzzahl zwischen 0 und Output.count, und kein Element aus dem Array. Wie soll das auch gehen, die Funktion kennt das Array ja noch nicht einmal.
    Wo liest du, dass das ein Element aus dem Array liefern würde? Um genau zu sein liefert arc4random_uniform eine Ganzzahl zwischen [0, Output.count)

    Oxymoron68 schrieb:

    test = output[Int(arc4random_uniform(UInt32(output.count)))]
    Hier sieht man wieder die Schönheit, Einfachheit und Lesbarkeit von Swift.
    Das Herz besitzt Gründe, die die Vernunft nicht kennt.
  • pierredrks schrieb:

    macmoonshine schrieb:

    arc4random_uniform liefert dir eine Ganzzahl zwischen 0 und Output.count, und kein Element aus dem Array. Wie soll das auch gehen, die Funktion kennt das Array ja noch nicht einmal.
    Wo liest du, dass das ein Element aus dem Array liefern würde?
    Wo liest du, dass macmoonshine das behauptet?

    pierredrks schrieb:

    Um genau zu sein liefert arc4random_uniform eine Ganzzahl zwischen [0, Output.count)
    Wo liest du, dass macmoonshine etwas anderes behauptet?
  • Michael schrieb:

    pierredrks schrieb:

    macmoonshine schrieb:

    arc4random_uniform liefert dir eine Ganzzahl zwischen 0 und Output.count, und kein Element aus dem Array. Wie soll das auch gehen, die Funktion kennt das Array ja noch nicht einmal.
    Wo liest du, dass das ein Element aus dem Array liefern würde?
    Wo liest du, dass macmoonshine das behauptet?

    Hast du seinen Satz gelesen? Wieso sollte er schreiben dass arc4... kein Element aus dem Array liefert, wenn er nicht glaubt das vorher irgendwo gelesen zu haben? Das kann ich natürlich auch falsch verstanden haben.

    Michael schrieb:

    pierredrks schrieb:

    Um genau zu sein liefert arc4random_uniform eine Ganzzahl zwischen [0, Output.count)
    Wo liest du, dass macmoonshine etwas anderes behauptet?
    "zwischen" ist ein recht schwammiger Begriff was die obere und untere Grenze betrifft, für mich schließt er entweder beide ein oder beide aus, nicht aber eine Grenze ein und die andere aus.
    Das Herz besitzt Gründe, die die Vernunft nicht kennt.