2011-12-08 64 views
1

我的应用程序从NSUserDefaults加载时出现一个非常奇怪的问题。 这是我的appDelegate代码:从NSUserDefaults加载时出现问题

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
NSString *user = [[NSString alloc]initWithString:[defaults objectForKey:@"_settingsUsername"]]; 
NSString *password = [[NSString alloc]initWithString:[defaults objectForKey:@"_settingsPassword"]]; 
NSString *instance = [[NSString alloc]initWithString:[defaults objectForKey:@"_settingsInstance"]]; 

的错误是这样的:[NSPlaceholderString initWithString:]:无参数” 这很奇怪,因为我把Settings.bundle - > Root.plist为默认值上面的所有领域。

+0

@Stephen达林顿是正确的。但现在粘贴代码当你通过或NSUserDefults.I希望设定值比我可以帮你 – Harish

回答

0

我认为问题是如果用户还没有进入您的应用程序的设置,那么从NSUserDefaults返回的那些键的所有值都是零。您需要处理该案件并采取相应行动 - 可能需要进入Settings.bundle并选取您已放入的默认值。我只想写一个获取密钥值的方法,如果NSUserDefaults返回nil它会为您处理设置包的所有查询。

1

奇怪的是,它应该如何工作 - 这也让我最初感到困惑。

我想要记住的是,您可以使用NSUserDefaults没有 Settings.bundle,所以它不能是设置默认值的唯一方法。

Apple提供示例代码AppPrefs,它显示如何将设置中的默认值复制到NSUserDefaults

+0

似乎是一个不错的解决方案..但...之后我复制/粘贴/更改它,在点击“运行”后,应用程序将无法完成启动。没有错误,没有崩溃。只是仍然加载的东西,我不知道... – Lolloz89

+0

我认为苹果的示例代码是一个巨大的循环。一旦我设置新的UserDefaults与setupByPreference(),一个通知被发送到应用程序委托调用setupByPreference()其中设置Userdefaults等...谢谢苹果! – Lolloz89

+0

我想你错了。 'if(testValue == nil)'这行是有原因的。 –

1

你为什么不使用它?

NSUserDefaults *defaults = [NSUserDefaults standarduserDefaults]; 
NSString *user = [defaults objectForKey:@"_settingsUsername"]; 
NSString *password = [defaults objectForKey:@"_settingsPassword"]; 
NSString *instance = [defaults objectForKey:@"_settingsInstance"]; 

并确保有这些键的对象。

希望它有助于

+0

我试过..它不工作,[默认objectForKey:@“anyKey”]返回nil。 – Lolloz89

+0

代码如果与问题中发布的代码效果相同 - 当然更好,但它不能解决问题。 –

+0

你确定你在NSUserDefaults中存储了一些东西吗?就像[[NSUserDefaults standardUserDefaults] setObject:anyObject forKey:@“anyKey”]其中anyObject是anyObject,anyKey是_settingsUsername或_settingsPassword,或者稍后您将使用的任何内容。 – Novarg