当我的应用从NSUserDefaults加载时,我遇到了一个非常奇怪的问题。 这是我的appDelegate中的代码:
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:]:nil参数' 这很奇怪,因为我输入了Settings.bundle - > Root.plist上面所有字段的默认值。
答案 0 :(得分:1)
奇怪的是它应该如何运作 - 这最初让我很困惑。
我想要记住的是,您可以使用NSUserDefaults
而不使用 Settings.bundle,因此它不是设置默认值的唯一方法。
Apple提供示例代码AppPrefs,其中显示了如何将设置中的默认值复制到NSUserDefaults
。
答案 1 :(得分:1)
你为什么不用它?
NSUserDefaults *defaults = [NSUserDefaults standarduserDefaults];
NSString *user = [defaults objectForKey:@"_settingsUsername"];
NSString *password = [defaults objectForKey:@"_settingsPassword"];
NSString *instance = [defaults objectForKey:@"_settingsInstance"];
确保这些键有对象。
希望有所帮助
答案 2 :(得分:0)
我认为问题在于,如果用户尚未进入您的应用的设置,那么从这些键的NSUserDefaults
返回的所有值都是零。你需要处理这种情况并采取相应的行动 - 可能是进入Settings.bundle
并挑选你放在那里的默认值。我只想写一个获取键值的方法,如果NSUserDefaults
返回nil
,它会为你处理所有设置包的查询。