iphone - NSUserDefaults: +resetStandardUserDefaults 方法有什么用?我如何提供 "system settings"?

标签 iphone cocoa-touch uikit nsuserdefaults

我希望用户能够做出一些偏好,例如颜色、首选图像等。 当我为此使用 NSUserDefaults 时,在应用程序首次启动时不会有任何首选项,对吧?所以,每次我想获得像这样的偏好

NSInteger avatarID = (NSInteger)[[NSUserDefaults standardUserDefaults] objectForKey:@"avatar"];

我必须检查它是否为空,然后使用我的系统首选项。但后来我在文档中看到了这一点:+resetStandardUserDefaults

是否有两个默认分支保存在某处?来自用户的,还是来自开发者的?

最佳答案

是的,但这与您正在做的有点不同。 NSUserDefaults 有 registerDefaults 方法,它允许您使用您提供的值填充 NSDictionary 中的“空白”默认值。将其放入应用程序 Controller 的 +initialize 方法中,您就会知道默认值是合理的。如果用户默认对象找到某个键​​的“真实”值,无论是您在当前应用程序启动期间设置的值还是从磁盘加载的值,它将始终优先于您在 registerDefaults 中提供的值。 resetStandardUserDefaults 将从内存中删除共享用户默认对象并撤消您对其所做的任何自定义,您不需要提供默认值。

另外,请记住,您不能像现在这样将对象转换为原始 NSInteger 值,您最终只会得到一个表示对象指针的内存位置的数字。可以使用 NSUserDefault 的 integerForKey: 直接获取原始值,也可以使用 objectForKey: 获取 NSNumber 并使用 integerValue 获取原始值。

关于iphone - NSUserDefaults: +resetStandardUserDefaults 方法有什么用?我如何提供 "system settings"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/898301/

相关文章:

ios - 无法在 iOS 8 中添加 .pch 文件

iphone - 我是否可以更改 NSManagedObjectContextObjectsDidChangeNotification 中的对象图?

iphone - 边界中心

swift - SwiftUI 中是否有等效的 openSettingsURLString ?

swift - 创建功能以设置导航 Controller

ios - MKOverlayRenderer 比 MKOverlayView 差?

javascript - jquery 点击在 ipad/iphone 上不工作

ios - 尝试与自动布局对齐

iphone - 这个针对 Cydia 的 Tweak 有什么问题?

iphone - AppDelegate 中声明的变量是否可供所有其他类访问?