【问题标题】:userdefaults not being saved after first time第一次后未保存用户默认值
【发布时间】:2017-03-09 23:54:59
【问题描述】:

我创建了一些简单的系统,如果userdefaults 有键“isWalkthroughPresented”。如果密钥是false,则显示walkthourghViewController。如果它没有密钥,则从数据库中检查。

但是它在第一次之后没有设置密钥。但在一些启动后保存。应该是什么问题?

这是我在用户登录并看到第二个 ViewController 后在 viewDidAppear 中使用的代码:

let userDefaults = UserDefaults.standard

        if !userDefaults.bool(forKey: "isWalkthroughPresented") {

            presentWalkthrough()

            userDefaults.set(true, forKey: "isWalkthroughPresented")

        }else{
            checkIfCurrentUserHasOpenedTheAppBefore()//this just checks if user in db has the value
        }

【问题讨论】:

    标签: ios swift userdefaults


    【解决方案1】:

    设置用户默认值后,调用此函数将更改强制保存到数据库:

    //...
    userDefaults.set(true, forKey: "isWalkthroughPresented")
    userDefaults.synchronize()
    

    通常会定期调用synchronize() 方法以将缓存的用户设置保存到数据库。您设置"isWalkthroughPresented" 和再次读取之间的间隔不足以自动调用synchronize()

    另请参阅method documentation 中的这些详细信息:

    因为此方法 [synchronize()] 会定期自动调用,因此仅当您无法等待自动同步(例如,如果您的应用程序即将退出)或想要更新用户时才使用此方法即使您没有进行任何更改,也默认为磁盘上的内容。

    【讨论】:

    • 哇,它完全做到了。感谢您的解释。有人曾经告诉我不要使用它但我不记得原因所以我没有使用但我应该使用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多