有没有办法在将值分配给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情况.
你应该检查 [NSNull null]
:
id vUser = [results objectForKey:@"current_user_following"]; if (vUser != [NSNull null]) { // do stuff... } else { // handle the case appropriately... }
您可以先测试然后有条件地分配,例如以下内容:
if (NSValue* val = [results objectForKey:@"current_user_following"]) { mySTUser.current_user_following = [val boolValue]; }
这个:
objectForKey:
通过将结果存储在变量中来避免调用两次
将变量的范围限制为if
语句
因为nil
是等于0
因此,如果val
不是,则仅执行赋值语句nil
为了额外检查价值,NSNull
您必须添加ChristopheD给出的另一个测试,但我NSNull
在这里真的需要问题 - YES
/ NO
应该足以描述如"跟随".
如果您没有键的有用值,您可以简单地将其从字典中删除或不首先插入它.