我希望用户能够做出一些偏好,例如颜色、首选图像等。 当我为此使用 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/