如何转换和比较NSNumber和BOOL?

Jak*_*kub 50 iphone objective-c

首先,我将BOOL值转换为NSNumber,以便将其置于NSUserDefaults中.后来我想从NSUserDefaults中检索BOOL值,但显然我得到NSNumber而不是BOOL.我的问题是?

  1. 如何从NSNumber转换回BOOL?
  2. 如何比较NSNumber与BOOL值.

目前我有:

if (someNSNumberValue == [NSNumber numberWithBool:NO]) {
    do something
}
Run Code Online (Sandbox Code Playgroud)

有什么比较好的方法吗?

谢谢!

Geo*_*che 137

您目前比较两个指针.使用NSNumbers方法来实际比较两者:

if([someNSNumberValue isEqualToNumber:[NSNumber numberWithBool:NO]]) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

要获得从bool值NSNumber使用-(BOOL)boolValue:

BOOL b = [num boolValue];
Run Code Online (Sandbox Code Playgroud)

通过这种方式,这种比较对我来说更容易阅读:

if([num boolValue] == NO) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)


ale*_*los 5

斯威夫特4:

let newBoolValue = nsNumberValue.boolValue
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述