如何区分字典中的BOOL值:NO,nil或不存在

时间:2012-08-18 14:12:26

标签: objective-c boolean

我正在使用条件语句,例如

// isComplete is a BOOL value
if (![videoDictionary valueForKey:@"isComplete"]) {

    // do important things here

}

问题是这个陈述似乎无法区分NO,nil和key不存在。如果isComplete为NO,并且当isComplete为nil或isComplete不存在(无密钥)时,如何确保满足此条件?如何阻止误报?

2 个答案:

答案 0 :(得分:1)

做类似的事情:

NSNumber* IsComplete;
IsComplete=[videoDictionary objectForKey:@"isComplete"];
if (IsComplete!=nil && ![IsComplete boolValue])
{
   ...
}

答案 1 :(得分:1)

这实际上不是问题。字典不能直接包含 BOOL,也不能将nil作为键的值。密钥@"isComplete" 的值必须才是有效对象(如果存在的话)。如果它表示一个布尔值,它可能是NSNumber,你应该检查对象的boolValue

如果表达式[someDictionary objectForKey:@"aKey"]的计算结果为false,那么只是因为该键没有值。