关于注册用户默认值的使用有很多答案,我仔细看了看,但仍然被我所看到的行为所困扰。
在我的设置包中,我有一个切换开关,我给标识符“共享”赋予了默认值 YES。我在设置应用程序中看到了这个切换开关,但它没有默认为开。即使我从手机中删除该应用程序并重新安装。
在我的 didfinishlaunchingwithoptions 方法中,我有以下内容:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSDictionary *appDefaults = [NSDictionary dictionaryWithObject:@"YES" forKey:@"sharing"];
[defaults registerDefaults:appDefaults];
[defaults synchronize];
如果我测试看看:
NSLog(@"%d",[defaults boolForKey:@"sharing"]);
默认已设置,但未反射(reflect)在设置应用程序中。
如果我然后转到设置应用程序并将开关打开并测试值:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
BOOL enabled = [defaults boolForKey:@"sharing"];
这仍然会导致我期望的 YES。
然后我将其关闭并再次测试:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
BOOL enabled = [defaults boolForKey:@"sharing"];
正如预期的那样,它不会,现在连接工作正常。
因此,基本上一切正常,除了在更改设置之前,默认值以编程方式存在,但未在设置应用程序中直观显示。
希望有人能指出我所缺少的!
谢谢
最佳答案
问题是我在 settings.bundle (Root.plist) 中将“ON 值”和“Off 值”设置为字符串类型而不是 bool 值。
我最初没有发现错误,因为应用程序按预期响应并且可以与设置应用程序交互。唯一的问题是设置应用程序的初始“视觉”值设置不正确。当我更多地考虑它时,这种行为是有道理的。
本教程帮助我找到了我的错误:
http://useyourloaf.com/blog/2010/5/18/adding-a-settings-bundle-to-an-iphone-app.html
关于ios - registerDefaults 未反射(reflect)在设置应用程序中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8663084/