Ios 第一次之后未保存用户默认值

Ios 第一次之后未保存用户默认值,ios,swift,userdefaults,Ios,Swift,Userdefaults,我创建了一些简单的系统,如果userdefaults具有键“isWalkthroughPresented”。如果按键为false,则显示WalkthourgViewController。如果它没有密钥,则从数据库中进行检查 但是,它不会在第一次之后设置关键点。但在一些发射后保存。有什么问题吗 这是用户登录并看到第二个ViewController后,我在ViewDid中使用的代码: let userDefaults = UserDefaults.standard if !user

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

但是,它不会在第一次之后设置关键点。但在一些发射后保存。有什么问题吗

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

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
        }

设置用户默认值后,调用此命令以强制保存对数据库的更改:

//...
userDefaults.set(true, forKey: "isWalkthroughPresented")
userDefaults.synchronize()
通常会定期调用
synchronize()
方法将缓存的用户设置保存到数据库中。设置
“isWalkthroughPresented”
和再次读取之间的间隔不足以自动调用
synchronize()

另请参见以下内容中的这些详细信息:

由于此方法[synchronize()]是定期自动调用的,因此仅当您无法等待自动同步时(例如,如果您的应用程序即将退出),或者即使未做任何更改也要将用户默认值更新为磁盘上的值时,才使用此方法


哇,它完全做到了。谢谢你的解释。有人曾经告诉我不要用它,但我不记得原因,所以我没有用,但我应该用。