簡體   English   中英

為什么在首次啟動應用程序時未設置“用戶默認值”布爾值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM