我正在使用条件语句,例如
// isComplete is a BOOL value
if (![videoDictionary valueForKey:@"isComplete"]) {
// do important things here
}
问题是这个陈述似乎无法区分NO,nil和key不存在。如果isComplete为NO,并且当isComplete为nil或isComplete不存在(无密钥)时,如何确保满足此条件?如何阻止误报?
答案 0 :(得分:1)
做类似的事情:
NSNumber* IsComplete;
IsComplete=[videoDictionary objectForKey:@"isComplete"];
if (IsComplete!=nil && ![IsComplete boolValue])
{
...
}
答案 1 :(得分:1)
这实际上不是问题。字典不能直接包含 BOOL
,也不能将nil
作为键的值。密钥@"isComplete"
的值必须才是有效对象(如果存在的话)。如果它表示一个布尔值,它可能是NSNumber
,你应该检查对象的boolValue
。
如果表达式[someDictionary objectForKey:@"aKey"]
的计算结果为false,那么只是因为该键没有值。