如何测试NSUserDefaults用户设置中是否存在BOOL?

Jus*_*and 10 xcode objective-c ios

我在NSUserDefaults中设置了一个BOOL值,如下所示.

[userDefaults setBool:NO forKey:@"theKeyOfMyBOOL"];
Run Code Online (Sandbox Code Playgroud)

在我的代码中的其他地方,如果未在NSUserDefaults中设置密钥"theKeyOfMyBOOL",我想执行一些操作.如何验证是否设置了此密钥?如果我做

[userDefaults boolForKey:@"theKeyOfMyBOOL"];
Run Code Online (Sandbox Code Playgroud)

然后返回的值可能是nil,我认为它的计算结果为false,或者NO的实际BOOL值,其值为false.

但是,我需要区分这两个值(当然还有YES).我如何可靠地做到这一点?

jrt*_*ton 45

[userDefaults boolForKey:@"theKeyOfMyBOOL"];返回BOOL,所以要么是(YESNO不是nil).

在内部,它存储为NSNumber.所以,如果你打电话

[userDefaults objectForKey:@"theKeyOfMyBOOL"];
Run Code Online (Sandbox Code Playgroud)

NSNumber如果你曾经存过任何东西,或者nil如果你没有存储过,你将得到一个.