2

ばかげた質問の警告...私は睡眠を奪われているかもしれませんが、これを理解できないようです。

「現在」はNSDictionaryです

if ([current valueForKey:@"name"] != nil)
{
    NSLog(@"here %@", [current valueForKey:@"name"]);
}

これは印刷します

here John
here Sam
here <null>
here <null>
here Billy

「if xx != nil」がヌルを防いでいるはずではありませんか? 'name' は辞書に存在しますが、name の値が空である可能性があります。

4

3 に答える 3

5

NSArrayNSDictionarynil 値を含めることはできません。NSNULL特に nil のプレースホルダーとして作成されました。コレクションクラスに入れることができ、場所を取るだけです。

NSNullシングルトン オブジェクトを定義します。つまり、インスタンスは 1 つしか存在NSNullしませんが、好きなだけ多くの場所で使用できます。

そして、あなたはこのようにチェックする必要があります....

if (current != nil || [current valueForKey:@"name"] != [NSNull null] )
{
      NSLog(@"here %@", [current valueForKey:@"name"]);
}

そして、私はあなたがこの出力を得ると確信しています.....

出力

here John
here Sam
here Billy
于 2013-07-10T10:44:12.120 に答える
0

このようにしてみて、

if ([current valueForKey:@"name"] != nil | [current valueForKey:@"name"]!=[NSNull null] )
{
    NSLog(@"here %@", [current valueForKey:@"name"]);
}
于 2013-07-10T10:44:53.797 に答える