0

次のように、このディクショナリ内の項目 (サーバーから返される) が NULL かどうかを確認しています。

    NSString *imageURL = [userDict objectForKey:@"image_url"];
    NSString *userName = [userDict objectForKey:@"username"];
    NSString *typeName = [userDict objectForKey:@"type"];

    if (imageURL == NULL || userName == NULL || typeName  == NULL || imageURL.length == 0) {
        localImage = [UIImage imageNamed:@"first.png"];
        [addAnnotation setTitle:@"Something"];
        [addAnnotation setSubTitle:@"Wrong"];
    }

ただし、1 つのレコード (上記は for ループにあります) で[userDict objectForKey:@"image_url"]は戻ります"<null>"が、上記の if ステートメントで正しく処理されません。null チェックが機能しないのはなぜですか?

4

4 に答える 4

2

それ以外の

if([userDict objectForKey:@"image_url"] == nil)

これを使って:

if([userDict objectForKey:@"image_url"] == [NSNull null])

これは、JSON デシリアライザーなどによって返される辞書を扱う場合に問題なく機能します。

于 2012-08-16T12:32:01.690 に答える
1

代わりに比較してみてください

[NSNull null]

于 2012-08-16T12:30:38.637 に答える
1

辞書は null オブジェクトを返します。これを使用してチェックできる[NSNull null]ため、この方法で null オブジェクトと比較できます。Nullオブジェクト以外のポインターに使用する必要があります。nilObjective-cidタイプに使用されます。

于 2012-08-16T12:34:38.773 に答える
0

すべての Null のようif(object==[NSNull null]||object==NULL||object==nil)にチェックします。すべてのタイプをチェックします。したがって、特定する必要はありません。

于 2012-08-16T12:43:21.717 に答える