2017-10-23 17 views
0

私はNSStringのオブジェクトがnullであるかどうかを確認するために、この単純なコードを使用していますが、何らかの理由でそれがこここのnullチェックが失敗するのはなぜですか?

を失敗すると、私の簡単なチェック

NSString *imageUrl = [dict objectForKey:@"imageUrl"]; 

    NSLog(@"Jonge: %@", imageUrl); 

    if(![imageUrl isEqual:[NSNull null]]) { 
     NSLog(@"In the loop"); 
     NSURL *url = [[NSURL alloc]initWithString:imageUrl]; 
     NSData *data =[NSData dataWithContentsOfURL:url]; 
     cell.imageView.image = [UIImage imageWithData:data]; 
    } 

デバッグがはっきり

を次のようにオブジェクトがnullであることを示しています
2017-10-23 11:48:22.711228+0800 NWMobileTill[46614:7498779] Jonge: (null) 

しかし、私はまだ

2017-10-23 11:48:22.711367+0800 NWMobileTill[46614:7498779] In the loop 
以下のようにループで終わります

nullチェックが機能しないのはなぜですか?

+0

[\ [nsnullをヌル\]とゼロの違いは何ですか?](https://stackoverflow.com/questions/836601/whats-the-difference-between-nsnull-null-andの可能性のある重複-nil) – Balasubramanian

+0

[null(null)vs との違いは何ですか?](https://stackoverflow.com/q/11287590) –

答えて

0

(null)は、nilであり、[NSNull null]ではないので、チェックimageUrl != NSNullが成功します。あなたは、文字列をチェックすることができる

if (imageUrl != nil) { 
+0

null nilなどのさまざまなタイプに関するドキュメントはありますか?私はグーグルではなく、良いものを見つけることができませんでした –

+2

'NSNull'はほんの少しのケースでしか使われていません。 Mattt Thompsonは、[nil/Nil/NULL/NSNull'に関する記事](http://nshipster.com/nil/)を書きました。 – vadian

0

と同じである

if (imageUrl) { 

を記述する必要が

は空白かではありません。

if(![imageUrl isEqualToString:@""]) 
1

nilは何を表していないか、専門用語では、我々は'\0'は(Cコンセプトに応じて)と言うことができます。これまでどんなクラスのインスタンスを作成しても、デフォルトでObjective Cはそれをゼロにします。

[NSNull null]はオブジェクトを与えます。目的Cでは、NSNullの使用が制限されています。コレクションで使用されています(NSArrayおよびNSDictionaryなど)

NSDictionaryを使用している場合は、次のように確認できます。

if ([dict objectForKey:@"imageUrl"] != [NSNull null]) { 
    //your code... 
} 
関連する問題