2011-12-29 52 views
4

有很多关于使用注册用户默认设置的答案,我看起来很辛苦,并仍然被我看到的行为难倒。registerDefaults没有反映在设置应用程序

在我的设置包中,我有一个拨动开关,我给标识符'分享'给它一个默认值YES。我在设置应用程序中看到此切换开关,但它不会默认为开。即使我从手机中删除应用程序并重新安装。

在我didfinishlaunchingwithoptions方法,我有以下:

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

[defaults synchronize]; 

如果我测试一下,看看:

NSLog(@"%d",[defaults boolForKey:@"sharing"]); 

默认设置,但它不会反映在设置应用程序。

如果我然后去设置应用程序,并翻转开关并测试值:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
BOOL enabled = [defaults boolForKey:@"sharing"]; 

这仍然将导致YES,我期望的那样。

而且,当时我又拨至关闭和测试:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
BOOL enabled = [defaults boolForKey:@"sharing"]; 

它不会如预期的连接现在工作正常。

因此,基本上一切工作都很好,除了在设置更改之前,默认情况下以编程方式存在,但它不会在设置应用程序中直观显示。

希望有人能指出我失踪的东西!

感谢

回答

3

问题是,我有“的关闭值”集我settings.bundle(Root.plist)String类型,而不是布尔“的价值”和。

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

本教程帮我找到我的错误:

http://useyourloaf.com/blog/2010/5/18/adding-a-settings-bundle-to-an-iphone-app.html

+0

模拟到马特,我有默认值设置为在我的设置包中键入字符串,而不是布尔值。那里同样的问题。 – Bjinse 2013-04-02 21:51:03

2

使用[NSUserDefaults standardUserDefaults] setBool: forKey:]代替[[NSUserDefaults standardUserDefaults] setObject: forKey:]帮我简化铸造。