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"];

这仍然会导致我期望的 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/

相关文章:

iphone - 将 Facebook 登录集成到 iOS iPad 应用程序中

ios - Swift - 通过引用获取约束或循环通过属性的约束?

javascript - 避免在 ios 浏览器中对 204 响应进行表单重定向

php - 如何在PHP端检索NSDictionary

iphone - 如何在Appstore上提交iphone应用程序,并且有哪些先决条件?

ios - Cocos2d-x CClabelTTF 隐形

ios - SpriteKit didBeginContact 函数未调用

iOS- 使用 SWRevealViewController 打开后 View 时使前 View 变暗

ios - App Store Connect消息:您的帐户很快将需要迁移到联合身份验证

ios - 如何在像 Apple 的 Maps.app 一样缩放 MKMapView 期间显示 map 比例