为什么我的用户默认值bool未在首次启动应用时设置?

时间:2017-05-29 01:00:57

标签: ios swift userdefaults

我有一个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()

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

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

任何见解都将受到赞赏。谢谢!

2 个答案:

答案 0 :(得分:1)

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

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已经在任何函数之外实例化了,它似乎只需要再次设置。

感谢您的评论!

答案 1 :(得分:0)

你应该使用像这样的方法

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")

    }