ios/objective-c:测试是否存在 NSUserDefault
ios/objective-c: Testing for existence of NSUserDefault
我想测试是否定义了 NSUserDefault 值,如果没有定义它。但是,在变量的值为0的情况下,我认为与NO相同,以下是解析为TRUE并重置变量。
if(![[NSUserDefaults standardUserDefaults] boolForKey:@"notifyOn"]){
[prefs setBool:YES forKey:@"notifyOn"];
}
换句话说,如果值为 0,![[NSUserDefaults standardUserDefaults] boolForKey:@"notifyOn"] 似乎为真。
我只想设置之前没有设置的变量。
顺便说一句,当我将此记录到控制台时,我正在查看 1 和 0 而不是 YES 和 TRUE。我假设它们是相同的,但如果不相同,请确认。
感谢您的帮助。
至于0和1是的,它们相当于NO和YES。所以你采用了正确的方法。
如果你想检查布尔值是否存在,那么 [userDefaults boolForKey:@"theKeyOfMyBOOL"];
returns 一个 BOOL,所以是或否(不是零)。
在内部,它存储为一个 NSNumber。所以,如果你调用
[userDefaults objectForKey:@"theKeyOfMyBOOL"];
如果你曾经存储过任何东西,你将得到一个 NSNumber,如果你没有存储过任何东西,你将得到一个 NSNumber。
所有值,包括像 BOOL
这样的基本类型,实际上都存储为对象(NSNumber
对象,在 BOOL
的情况下)并且对象可以是 nil
, 意思是 "not set".
因此:
if ([[NSUserDefaults standardUserDefaults] objectForKey:@"notifyOn"] == nil) {
// Value is neither YES or NO
// (same as setObject:@(YES) forKey:@"notifyOn")
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"notifyOn"];
}
我想测试是否定义了 NSUserDefault 值,如果没有定义它。但是,在变量的值为0的情况下,我认为与NO相同,以下是解析为TRUE并重置变量。
if(![[NSUserDefaults standardUserDefaults] boolForKey:@"notifyOn"]){
[prefs setBool:YES forKey:@"notifyOn"];
}
换句话说,如果值为 0,![[NSUserDefaults standardUserDefaults] boolForKey:@"notifyOn"] 似乎为真。
我只想设置之前没有设置的变量。
顺便说一句,当我将此记录到控制台时,我正在查看 1 和 0 而不是 YES 和 TRUE。我假设它们是相同的,但如果不相同,请确认。
感谢您的帮助。
至于0和1是的,它们相当于NO和YES。所以你采用了正确的方法。
如果你想检查布尔值是否存在,那么 [userDefaults boolForKey:@"theKeyOfMyBOOL"];
returns 一个 BOOL,所以是或否(不是零)。
在内部,它存储为一个 NSNumber。所以,如果你调用
[userDefaults objectForKey:@"theKeyOfMyBOOL"];
如果你曾经存储过任何东西,你将得到一个 NSNumber,如果你没有存储过任何东西,你将得到一个 NSNumber。
所有值,包括像 BOOL
这样的基本类型,实际上都存储为对象(NSNumber
对象,在 BOOL
的情况下)并且对象可以是 nil
, 意思是 "not set".
因此:
if ([[NSUserDefaults standardUserDefaults] objectForKey:@"notifyOn"] == nil) {
// Value is neither YES or NO
// (same as setObject:@(YES) forKey:@"notifyOn")
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"notifyOn"];
}