当前位置 : 主页 > 手机开发 > 其它 >

swift – 了解UserDefaults寄存器方法

来源:互联网 收集:自由互联 发布时间:2021-06-11
首先,让我说这不是抱怨,我只是想了解寄存器(默认值:[])方法是如何工作的. 我在didFinishLaunchingWithOptions方法中使用UserDefaults寄存器(默认值:[])方法来注册我所有UseDefault键的默认值,一切
首先,让我说这不是抱怨,我只是想了解寄存器(默认值:[])方法是如何工作的.

我在didFinishLaunchingWithOptions方法中使用UserDefaults寄存器(默认值:[])方法来注册我所有UseDefault键的默认值,一切正常,正常工作.

我的问题是,为什么每次调用didFinishLaunchingWithOptions方法时寄存器中的值(默认值:[])方法都不会重置?

我不希望他们休息我只是想了解原因.

我有以下代码……

func application(...didFinishLaunchingWithOptions...) -> Bool {

    UserDefaults.standard.register(defaults: [
        keyUserName:"",
        keyHasCar:false
        ])
}

这就是为什么我的困惑,当应用程序运行时,它会按预期保存默认值,然后,如果值在应用程序的某个地方稍后被修改,并且在应用程序被杀死并重新启动之后,将再次调用didFinishLaunchingWithOptions但值不要重置,但如果我向数组添加一个新密钥,它会被保存,但其余的密钥不会被重置只有新的密钥添加其默认值.

同样,我不想重置值,我只需要了解寄存器方法是如何工作的.

从注册文档(默认值:):

If there is no registration domain, one is created using the specified dictionary, and NSRegistrationDomain is added to the end of the search list.

The contents of the registration domain are not written to disk; you need to call this method each time your application starts.

这意味着注册的默认值将作为您正在使用的正常用户默认值的后备.注册的默认值不会覆盖或替换标准用户默认值.

当您尝试从UserDefaults.standard查找密钥时,如果密钥不在那里,则会在注册的默认值中查找它,并返回结果(如果有).

在UserDefaults.standard中设置值后,当然是为键返回的值.如果从UserDefaults.standard中删除密钥,则会再次使用已注册的默认值.

网友评论