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

  1. 如何从NSNumber转换回BOOL?
  2. 如何将NSNumber与布尔值进行比较.

目前我有:

if (someNSNumberValue == [NSNumber numberWithBool:NO]) {
    do something
}

有更好的方法来进行比较吗?

谢谢

推荐答案

您当前比较了两个指针.使用NSNumbers方法来实际比较这两种方法:

if([someNSNumberValue isEqualToNumber:[NSNumber numberWithBool:NO]]) {
    // ...
}

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

BOOL b = [num boolValue];

有了这个比较,我就更容易这样读了:

if([num boolValue] == NO) {
    // ...
}

Objective-c相关问答推荐

将 NSInteger 转换为 NSIndexpath

Objective-c 点表示法或方括号表示法中首选什么?

如何使用 NSFileManager 删除目录及其内容

iphone keys 串项目在应用程序卸载后仍然存在?

检测时间格式是 12 小时还是 24 小时格式

在 Objective-C 中定义协议的类别?

具有动态高度的子视图的自动布局 UIScrollView

ARC的正确桥接?

如何构建一个 Objective-C 静态库?

捕获组在 NSRegularExpression 中不起作用

失go 对 UITextView 的关注时隐藏键盘

我们可以在 UIPageViewController 中自定义页面指示器吗?

iOS 7 - 键盘动画

如何将 .plist 文件中的数据 struct 读入 NSArray

判断 NSNumber 是否为 NaN

NSMutableArray 按顺序添加对象

UIDatePicker 中的最小和最大日期

如何创建 .dSYM 文件?

为什么使用弱指针进行委托?

UITableView 在半透明的导航栏下