【问题标题】:UserDefaults inital value for userDidSetUp in SwiftSwift 中用户 DidSet 的 UserDefaults 初始值
【发布时间】:2020-03-30 18:51:11
【问题描述】:

导航 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 { }

【问题讨论】:

    标签: computed-properties userdefaults rootviewcontroller swift5.1 coordinator-pattern


    【解决方案1】:

    您需要展示如何尝试使用您创建的属性的示例代码,但我尝试了您在此处显示的内容,并且能够使其按预期工作。这是我所做的:

    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

    【讨论】:

    • if UserDefaults.standard.didUserSetUp == false {}我正在使用 Equatable 我猜...if UserDefaults.standard.didUserSetUp == NSNumber(bool: false) 所以我正在检查双方是否相等,但它们不是,但我得到了 - TRUE 。谢谢你,我想办法是:UserDefaults.standard.didUserSetUp = false if UserDefaults.standard.didUserSetUp {}
    猜你喜欢
    • 1970-01-01
    • 2014-10-03
    • 1970-01-01
    • 1970-01-01
    • 2018-07-23
    • 2020-01-17
    • 1970-01-01
    • 2018-10-16
    • 1970-01-01
    相关资源
    最近更新 更多