Ios 设置应用程序中未反映registerDefaults

Ios 设置应用程序中未反映registerDefaults,ios,Ios,关于注册用户默认值的使用,有很多答案,我已经仔细研究了一下,仍然被我看到的行为难住了 在我的设置包中,我有一个切换开关,我给它一个标识符“sharing”,给它一个默认值YES。我在“设置”应用程序中看到了这个切换开关,但它并没有默认打开。即使我从手机中删除应用程序并重新安装 在我的didfinishlaunchingwithoptions方法中,我有以下几点: NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; N

关于注册用户默认值的使用,有很多答案,我已经仔细研究了一下,仍然被我看到的行为难住了

在我的设置包中,我有一个切换开关,我给它一个标识符“sharing”,给它一个默认值YES。我在“设置”应用程序中看到了这个切换开关,但它并没有默认打开。即使我从手机中删除应用程序并重新安装

在我的didfinishlaunchingwithoptions方法中,我有以下几点:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSDictionary *appDefaults = [NSDictionary dictionaryWithObject:@"YES" forKey:@"sharing"];
[defaults registerDefaults:appDefaults];

[defaults synchronize];
如果我测试以查看:

NSLog(@"%d",[defaults boolForKey:@"sharing"]);
默认设置已设置,但未反映在设置应用程序中

如果我随后转到设置应用程序,将开关拨到on并测试值:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
BOOL enabled = [defaults boolForKey:@"sharing"];
这仍然会导致我所期望的是

然后,我将其翻转为off并再次测试:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
BOOL enabled = [defaults boolForKey:@"sharing"];
它将不会像预期的那样,连接现在工作正常

因此,基本上一切正常,除了在更改设置之前,默认设置以编程方式存在,但未在设置应用程序中显示

希望有人能指出我遗漏了什么


谢谢

问题在于,我的settings.bundle(Root.plist)中将“Value for ON”和“Value for Off”设置为键入字符串,而不是布尔值。

我最初没有发现错误,因为应用程序的响应与预期一致,并且可以与设置应用程序交互。唯一的问题是设置应用程序的初始“视觉”值设置不正确。当我仔细考虑时,这种行为是有道理的

本教程帮助我找到了错误:


使用
[NSUserDefaults standardUserDefaults]setBool:forKey:
而不是
[[NSUserDefaults standardUserDefaults]setObject:forKey:
帮助我简化了强制转换。

与Matt类似,我在设置包中将默认值设置为type String而不是Boolean。同样的问题。