Brauche Hilfe bei meiner App

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

  • Brauche Hilfe bei meiner App

    Hallo. Ich bin neu in X code und möchte ein Quizz App programmieren, doch komme nicht weiter, da ich keine nützlichen Beiträge im Internet gefunden habe. Hätte genau zwei Fragen.

    Die erste wäre: Ich habe eine variable Anfang und die is 0. Dich im laufe des Spieles ändert sie sich. Schließt man nun die app und öffnet sie wieder, ist sie aber wieder 0. Also wie kann ich diese variable speichern?

    Die zweite Frage: Ich möchte das die Fragen per Zufall auftauchen. Aber wie kann ich eine variable erstellen die per Knopfdruck eine Zufallszahl zwischen 1 und 10 festlegt?

    Danke im Voraus. <X
  • Mac & i Test Abo
  • Zu deinem ersten Punkt:

    Erstelle mal eine Variable die deine UserDefaults beinhaltet

    Quellcode

    1. let defaults = UserDefaults.standard


    Dann kannst du den Wert den du gerne behalten möchtest in diesen defaults abspeichern

    Quellcode

    1. deineZahl = defaults.object(forKey: "number") as! Int
    2. print(defaults.object(forKey: "number") as Any)


    Zu deinem zweiten Punkt:


    Quellcode

    1. let names = ["Zoey", "Chloe", "Amani", "Amaia"]
    2. let randomName = names.randomElement()!
  • ThisIsBeat schrieb:

    Zu deinem ersten Punkt:


    Erstelle mal eine Variable die deine UserDefaults beinhaltet

    Quellcode

    1. let defaults = UserDefaults.standard




    Dann kannst du den Wert den du gerne behalten möchtest in diesen defaults abspeichern
    Generell sind UserDefaults ein möglicher Weg, eine einfache Zahl persistent zu speichern. Alternativen wären mittels Codable & JSONDecodable oder CoreData. Nur eine kleine Anmerkung zu deinem Code-Beispiel: Zum einen speicherst du hier keine Zahl, sondern rufst eine bereits gespeicherte ab. Zum Speichern reicht folgende Zeile:

    Quellcode

    1. UserDefaults.standard.set(123, forKey: "myNumber")
    Und zum Abrufen dieser gespeicherten Zahl gibt es die Funktion ```integer(forKey:)```, die einen Int zurückgibt. So kannst du das unschöne `as! Int` Casting weglassen.

    Quellcode

    1. let number = UserDefaults.standard.integer(forKey: "myNumber")
    Und bezüglich ```randomElement()``` ist es empfehlenswert, ein ```if let```oder ```guard```statement zu nutzen, anstelle des generell zu vermeidenden Force Unwrappings. Andernfalls würde bei einem leeren Array beim Aufruf dieser Funktion ein Runtime Error gethrown werden.
  • Hier mein Code vielleicht habe ich ja die variable falsch gesetzt:

    import UIKit


    var Anfang = 0


    class ViewControllerlevel: UIViewController {


    @IBOutlet weak var Geschichte: UIButton!
    @IBOutlet weak var Geo: UIButton!
    @IBOutlet weak var Astro: UIButton!
    @IBOutlet weak var Politik: UIButton!
    @IBOutlet weak var Umwelt: UIButton!
    @IBOutlet weak var Sport: UIButton!


    override func viewDidLoad() {
    super.viewDidLoad()
    if Anfang == 0{
    Geschichte.isHidden = false
    Geo.isHidden = false
    Astro.isHidden = false
    Politik.isHidden = false
    Umwelt.isHidden = false
    Sport.isHidden = false
    }
    if Anfang == 1{
    Geschichte.isHidden = false
    Geo.isHidden = true
    Astro.isHidden = true
    Politik.isHidden = true
    Umwelt.isHidden = true
    Sport.isHidden = true
    }
    if Anfang == 2{
    Geschichte.isHidden = true
    Geo.isHidden = false
    Astro.isHidden = true
    Politik.isHidden = true
    Umwelt.isHidden = true
    Sport.isHidden = true
    }
    if Anfang == 3{
    Geschichte.isHidden = true
    Geo.isHidden = true
    Astro.isHidden = false
    Politik.isHidden = true
    Umwelt.isHidden = true
    Sport.isHidden = true
    }
    if Anfang == 4{
    Geschichte.isHidden = true
    Geo.isHidden = true
    Astro.isHidden = true
    Politik.isHidden = false
    Umwelt.isHidden = true
    Sport.isHidden = true
    }
    if Anfang == 5{
    Geschichte.isHidden = true
    Geo.isHidden = true
    Astro.isHidden = true
    Politik.isHidden = true
    Umwelt.isHidden = false
    Sport.isHidden = true
    }
    if Anfang == 6{
    Geschichte.isHidden = true
    Geo.isHidden = true
    Astro.isHidden = true
    Politik.isHidden = true
    Umwelt.isHidden = true
    Sport.isHidden = false
    }


    UserDefaults.standard.integer(forKey: "intKey")




    [i]// Do any additional setup after loading the view.[/i]
    }
    @IBAction func Geschichte2(_ sender: Any) {
    if Anfang == 0{
    Anfang = 1


    Geschichte.isHidden = false
    Geo.isHidden = true
    Astro.isHidden = true
    Politik.isHidden = true
    Umwelt.isHidden = true
    Sport.isHidden = true
    UserDefaults.standard.set(Anfang, forKey: "intKey")
    }
    }
    @IBAction func Geo2(_ sender: Any) {
    if Anfang == 0{
    Anfang = 2
    Geschichte.isHidden = true
    Geo.isHidden = false
    Astro.isHidden = true
    Politik.isHidden = true
    Umwelt.isHidden = true
    Sport.isHidden = true
    }
    }
    @IBAction func astro2(_ sender: Any) {
    if Anfang == 0{
    Anfang = 3
    Geschichte.isHidden = true
    Geo.isHidden = true
    Astro.isHidden = false
    Politik.isHidden = true
    Umwelt.isHidden = true
    Sport.isHidden = true
    }
    }
    @IBAction func Politik2(_ sender: Any) {
    if Anfang == 0{
    Anfang = 4
    Geschichte.isHidden = true
    Geo.isHidden = true
    Astro.isHidden = true
    Politik.isHidden = false
    Umwelt.isHidden = true
    Sport.isHidden = true
    }
    }
    @IBAction func Umwelt5(_ sender: Any) {
    if Anfang == 0{
    Anfang = 5
    Geschichte.isHidden = true
    Geo.isHidden = true
    Astro.isHidden = true
    Politik.isHidden = true
    Umwelt.isHidden = false
    Sport.isHidden = true
    }
    }
    @IBAction func Sport(_ sender: Any) {
    if Anfang == 0{
    Anfang = 6
    Geschichte.isHidden = true
    Geo.isHidden = true
    Astro.isHidden = true
    Politik.isHidden = true
    Umwelt.isHidden = true
    Sport.isHidden = false
    }
    }


    [i]/*[/i]
    [i] // MARK: - Navigation[/i]


    [i] // In a storyboard-based application, you will often want to do a little preparation before navigation[/i]
    [i] override func prepare(for segue: UIStoryboardSegue, sender: Any?) {[/i]
    [i] // Get the new view controller using segue.destination.[/i]
    [i] // Pass the selected object to the new view controller.[/i]
    [i] }[/i]
    [i] */[/i]






    override func viewDidAppear(_ animated: Bool) {
    UserDefaults.standard.set(Anfang, forKey: "intKey")
    }


    }