gab*_*elk 5 nsuserdefaults ios
当我为我的应用设置默认首选项时,我正在执行以下操作:
1)Root.plist从里面读到Settings.bundle字典.
2)我测试是否设置了首选项,如果不是,我通过注册我的默认字典 [NSUserDefaults standardUserDefaults] registerDefaults:]
问题是,注册的默认值registerDefaults:不会转到持久性存储,因此如果用户从不更改其首选项,我将读取默认首选项并在NSUserDefaults每次启动应用时注册它们.
而不是使用registerDefaults:我可以使用setValue:forKey:并将我的默认设置转到持久性存储,绕过了在每次启动时构建和注册字典的需要.但是,Apple的文档和示例代码都指向registerDefaults:.
所以我想弄清楚我何时以及为什么要使用registerDefaults:以及何时/为什么要使用setValue:forKey:?
问题是,使用registerDefaults注册的默认值:不要去持久性存储,所以如果用户从不更改他们的首选项,我正在读取我的默认首选项,并在每次应用程序启动时使用NSUserDefaults注册它们.
是.为什么这是一个问题?为什么要在代码中写入磁盘内容?
而不是使用registerDefaults:我可以使用setValue:forKey:并将我的默认设置转到持久性存储,绕过了在每次启动时构建和注册字典的需要.但是,Apple的文档和示例代码都指向registerDefaults:.
只有当你第一次检查"是否设置了这个值?没有?好的,现在设置它." 这比使用更多的代码和成本registerDefaults:.
您应该使用registerDefaults:设置默认值.您应该使用setValue:forKey:保存活动设置的值.
还要记住NSUserDefaultsMac上也存在这种情况.在那里,用户可以使用defaults命令直接访问设置,因此程序不是唯一可以修改此存储的实体.
| 归档时间: |
|
| 查看次数: |
2486 次 |
| 最近记录: |