关于注册用户默认值的使用有很多答案,我仔细看了看,仍然对我所看到的行为感到困惑。
在我的设置包中,我有一个切换开关,我给标识符“共享”并给它一个默认值 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"];
这仍然会导致我期望的是。
然后我将其关闭并再次测试:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
BOOL enabled = [defaults boolForKey:@"sharing"];
这将如预期的那样为“否”,现在连接工作正常。
所以,基本上一切正常,除了在更改设置之前,默认值以编程方式存在,但它没有在设置应用程序中直观显示。
希望有人能指出我遗漏了什么!
谢谢
最佳答案
问题是我在 settings.bundle (Root.plist) 中将“开启值”和“关闭值”设置为类型字符串而不是 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/