0

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

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

    // do important things here

}

问题是这个语句似乎无法区分 NO、nil 和 key 不存在。我如何确保仅当 isComplete 为 NO 时才满足此条件,而不是当 isComplete 为 nil 或 isComplete 不存在(无键)时才满足?如何阻止误报?

4

2 回答 2

1

做类似的事情:

NSNumber* IsComplete;
IsComplete=[videoDictionary objectForKey:@"isComplete"];
if (IsComplete!=nil && ![IsComplete boolValue])
{
   ...
}
于 2012-08-18T14:17:35.647 回答
1

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

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

于 2012-08-18T17:50:14.087 回答