我必须关注NSUserDefaults,我希望在用户首次启动应用时将其设置为yes?我该怎么做呢?我知道需要将其放入AppDelegate,但我无法解决如何做到这一点。
NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
[self.truthonoff setOn:[[defaults objectForKey:@"truthonoff"] boolValue] animated:YES];
[self.truthonoff addTarget:self action:@selector(stateSwitched:) forControlEvents:UIControlEventValueChanged];
[self.dareonoff setOn:[[defaults objectForKey:@"dareonoff"] boolValue] animated:YES];
[self.dareonoff addTarget:self action:@selector(stateSwitcheddare:) forControlEvents:UIControlEventValueChanged];
//other options
[self.shakesonoff setOn:[[defaults objectForKey:@"shakesonoff"] boolValue] animated:YES];
[self.shakesonoff addTarget:self action:@selector(stateSwitchedshakes:) forControlEvents:UIControlEventValueChanged];
[self.soundonoff setOn:[[defaults objectForKey:@"soundonoff"] boolValue] animated:YES];
[self.soundonoff addTarget:self action:@selector(stateSwitchedsound:) forControlEvents:UIControlEventValueChanged];
答案 0 :(得分:3)
你在寻找的是什么
-[NSUserDefaults registerDefaults:]
例如,您可以执行以下操作:
+ (void)initialize
{
if ([self class] == [AppDelegate class])
{
[[NSUserDefaults standardUserDefaults] registerDefaults:@{@"dareonoff":@NO}];
}
}
使用registerDefaults的好处是,使用-[NSUserDefault objectForKey:]
删除首选项会将密钥恢复为在registeredDefaults中声明的默认值。
答案 1 :(得分:0)
objectForKey:
会返回nil
- 如果以前没有设置任何密钥值,则会更加有效。
从用户默认值中检索值时,应始终检查nil。当它为零时,你继续使用resonalbe默认值。
这里发生的是objectForKey
返回nil
。然后,您将boolValue
发送给nil
,如果null value
,则返回FALSE
NO
或bool
。
答案 2 :(得分:0)
您可以在Settings.bundle中将初始值添加到Root.plist。然后您可以按照此问题中的描述注册这些默认值: