ios - registerDefaults 未反射(reflect)在设置应用程序中

标签 ios

关于注册用户默认值的使用有很多答案,我仔细看了看,仍然对我所看到的行为感到困惑。

在我的设置包中,我有一个切换开关,我给标识符“共享”并给它一个默认值 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/

相关文章:

ios - 当图像太大时使用 OpenGL 的黑色纹理

ios - 如何在 Swift 的同一部分中显示 UITableView 中的特定行列表

ios - 使用单位符号格式化本地化数字

ios - 什么指定了 UITextField 的占位符对齐方式?

ios - Cocos2D中如何保存和调用高分

ios - 在 swift 框架项目中包含 CocoasMQTT 库

ios - 如何在 block 内分配变量?

ios - 为什么手动实现哈希标签可以提高我的查询性能?

ios - 在 _CFAutoreleasePoolPop 崩溃

ios - UIScrollView contentInset 属性有什么用?