我想测试是否定义了 NSUserDefault 值,如果没有定义它。但是,在变量的值为 0 的情况下,我认为与 NO 相同,以下是解析为 TRUE 并重置变量。
if(![[NSUserDefaults standardUserDefaults] boolForKey:@"notifyOn"]){
[prefs setBool:YES forKey:@"notifyOn"];
}
换句话说,如果值为 0,![[NSUserDefaults standardUserDefaults] boolForKey:@"notifyOn"] 似乎为真。
我只想设置之前未设置的变量。
顺便说一句,当我将其记录到控制台时,我看到的是 1 和 0,而不是 YES 和 TRUE。我假设它们相同,但如果不同,请确认。
感谢您的帮助。
最佳答案
所有值,包括原始类型,如 BOOL
,实际上都存储为对象(NSNumber
对象,在 BOOL
的情况下)和对象可以是nil
,意思是“未设置”。
因此:
if ([[NSUserDefaults standardUserDefaults] objectForKey:@"notifyOn"] == nil) {
// Value is neither YES or NO
// (same as setObject:@(YES) forKey:@"notifyOn")
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"notifyOn"];
}
关于ios/objective-c : Testing for existence of NSUserDefault,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32628231/