第一次使用后未保存userdefault

时间:2016-10-27 10:26:23

标签: ios swift userdefaults

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

但是第一次没有设置密钥。但是在一些发布后节省了。应该是什么问题?

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

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
        }

1 个答案:

答案 0 :(得分:2)

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

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

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

请参阅method documentation

中的这些详细信息
  

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