我有一个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,然后在第二次启动时,这是真的吗?
任何见解都将受到赞赏。谢谢!
答案 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")
}