簡體   English   中英

Swift 中 userDidSetUp 的 UserDefaults 初始值

[英]UserDefaults inital value for userDidSetUp in Swift

導航 rootViewController 取決於用戶設置,因為我曾嘗試檢查用戶是否在主屏幕啟動之前完成了所有入職表單。 我的問題是如何在我的導航中將初始值設置為 UserDefaults。 這總是打印“假”

extension UserDefaults {
    var didUserSetUp: Bool? {
        get {
            ///// Register the app default:
            /// Initialize value from UserDefaults returns false
            UserDefaults.standard.register(defaults: ["didUserSetUp" : false])
            return UserDefaults.standard.bool(forKey: "didUserSetUp")
        }
        set {
            /// Set value to UserDefaults
            UserDefaults.standard.set(newValue, forKey: "didUserSetUp")
        }
    }

}

方式是在代碼中設置: UserDefaults.standard.didUserSetUp = false if UserDefaults.standard.didUserSetUp { }

您需要展示如何嘗試使用您創建的屬性的示例代碼,但我嘗試了您在此處顯示的內容,並且能夠使其按預期工作。 這是我所做的:

extension UserDefaults {
    var didCompleteOnboarding: Bool? {
        get {
            UserDefaults.standard.register(defaults: ["didCompleteOnboarding": false])
            return UserDefaults.standard.bool(forKey: "didCompleteOnboarding")
        }
        set {
            UserDefaults.standard.set(newValue, forKey: "didCompleteOnboarding")
        }
    }
}

然后在根視圖控制器中:

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        UserDefaults.standard.didCompleteOnboarding = true
        print(UserDefaults.standard.didCompleteOnboarding ?? false)
    }
}

在控制台中打印true

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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