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

これは実際には問題ではありません。ディクショナリにs を直接含めること も、キーの値として含めることもできません。キーの値が存在する場合、その値は有効なオブジェクトでなければなりません。ブール値を表している場合は である可能性が高く、オブジェクトの を確認する必要があります。BOOLnil@"isComplete" NSNumberboolValue

[someDictionary objectForKey:@"aKey"]が false と評価される場合、それは単にそのキーの値がないためです。

于 2012-08-18T17:50:14.087 に答える