如何检查BOOL是否为空?

时间:2010-05-03 18:01:03

标签: iphone objective-c cocoa-touch ipad null

有没有办法在将值分配给BOOL之前检查一个值是否为NULL / Nil?

例如,我在NSDictionary中有一个值可以是TRUE / FALSE / NULL

mySTUser.current_user_following = [[results objectForKey:@"current_user_following"]boolValue];

当值为NULL时,我收到以下错误

 *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSNull boolValue]: unrecognized selector sent to instance

我希望能够处理NULL情况。

2 个答案:

答案 0 :(得分:10)

您应该check for [NSNull null]

id vUser = [results objectForKey:@"current_user_following"];

if (vUser != [NSNull null]) {
    // do stuff...
}
else {
    // handle the case appropriately...
}

答案 1 :(得分:5)

您可以先测试然后有条件地进行测试,例如如下所示:

if (NSValue* val = [results objectForKey:@"current_user_following"]) {
    mySTUser.current_user_following = [val boolValue];
}

此:

  • 通过将结果存储在变量
  • 中来避免调用objectForKey:两次
  • 将变量的范围限制为if语句
  • 有效,因为nil相当于0
  • 因此,如果val不是nil ,则
  • 仅执行赋值语句

要另外检查值为NSNull,您必须添加ChristopheD给出的另一个测试,但我在这里确实需要NSNull - YES / {{ 1}}应足以满足“正在关注”之类的描述 如果您没有键的有用值,您只需将其从字典中删除或不首先插入它。