0

我有一个UserDefault Bool用于音乐播放的。

第一次启动时,我尝试将 bool 设置为 true,就像这样......

if launchedBefore {

        // Do nothing.

    } else {

        UserDefaults.standard.set(true, forKey: "musicOn")
        print("music is \(musicOn)")
        UserDefaults.standard.set(true, forKey: "alreadylaunched")

    }

这是在viewDidAppear().

问题是它在第一次启动时没有设置为真,无论我在哪里设置布尔值,它可能没有launchedBefore检查,它仍然没有在第一次设置。

我不明白为什么这不起作用?musicOn 在第一次启动时总是等于 false,然后在第二次启动时,是真的吗?

任何见解将不胜感激。谢谢!

4

2 回答 2

1

你应该使用这样的方法

let launchedBefore = UserDefaults.standard.bool(forKey: "alreadylaunched")
        if launchedBefore {

        // Do nothing.

    } else {

        UserDefaults.standard.set(true, forKey: "musicOn")
     //   print("music is \(musicOn)")
        UserDefaults.standard.set(true, forKey: "alreadylaunched")

    }
于 2017-05-29T06:49:47.873 回答
1

对我有用的是允许 var musicOn 再次等于用户默认布尔值。

if launchedBefore {

        // Do nothing.

    } else {

        UserDefaults.standard.set(true, forKey: "musicon")
        print("music is \(UserDefaults.standard.bool(forKey: "musicon"))")

        musicOn = UserDefaults.standard.bool(forKey: "musicon") // Stating it again works to update the bool.

        UserDefaults.standard.set(true, forKey: "alreadylaunched")

    }

Var musicOn 已经在任何函数之外实例化,似乎只需要再次设置它。

感谢您的评论!

于 2017-05-29T01:52:03.983 回答