Сброс пользовательских настроек при новом запуске - PullRequest
0 голосов
/ 25 февраля 2019

У меня есть программа, которая воспроизводит разные аудиоклипы, когда пользователь нажимает кнопку воспроизведения.Для воспроизведения звука значение кредита должно быть больше 1. Я пытался использовать UserDefaults следующим образом, но, похоже, он сбрасывается каждый раз.

class ViewController: UIViewController,.....
    var dataCredit = 3

    ....

    @IBAction func playsound(_ sender: Any) {
        defaults.set(dataCredit, forKey: "credits")

        credit = defaults.integer(forKey: "credits")

        if credit > 0 {
            feedLabel.text = "you have credits)"
            dataCredit = dataCredit - 1
            defaults.set(dataCredit, forKey: "credits")
            dataCredit = defaults.integer(forKey: "credits")
        } else if credit == 0 {
            feedLabel.text = "you dont have Credit\(startCredit)"
        }

Это то, что у меня сейчас есть.Каждый раз, когда я перезапускаю приложение, dataCredit возвращается к 3 и не запоминает значение, которое я сохранил.

1 Ответ

0 голосов
/ 25 февраля 2019

Это потому, что вы всегда называете defaults.set(dataCredit, forKey: "credits") первым делом.Вы делаете это так:

class ViewController: UIViewController,.....

....


@IBAction func playsound(_ sender: Any) {
    if let credit = defaults.integer(forKey: "credits"), credit > 0 {
        feedLabel.text = "you have credits)"
        dataCredit = dataCredit - 1
        defaults.set(dataCredit, forKey: "credits")
        dataCredit = defaults.integer(forKey: "credits")
    } else if credit == 0 {
        feedLabel.text = "you dont have Credit\(startCredit)"
    }
}

Обновление:

Чтобы установить начальное значение для кредита, я бы предложил сделать это вAppDelegate - didFinishLaunchingWithOptions метод:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // ...

    UserDefaults.standard.register(defaults: ["credits" : 3])

    // ...

    return true
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...