[英]Why does my User Defaults bool not set on first launch of app?
我有一個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()
。
問題在於,無論我將bool設置在什么位置,它在第一次啟動時都不會設置為true,如果沒有launchedBefore
檢查,它可能不會設置為第一次。
我不明白為什么這行不通? musicOn在第一次啟動時總是等於false,然后在第二次啟動時是真的嗎?
任何見識將不勝感激。 謝謝!
對我有用的是再次允許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已在任何功能之外實例化,似乎只需要重新設置一次。
感謝您的評論!
您應該使用這樣的方法
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")
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.