2017-10-23 4 views
0

ich diesen einfachen Code bin mit zu überprüfen, ob ein NSString Objekt null ist, aber aus irgendeinem Grund versagt esWarum schlägt diese Nullprüfung fehl?

hier ist meine einfache Prüfung

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]; 
    } 

Die Debug zeigt deutlich das Objekt null ist, wie

folgt
2017-10-23 11:48:22.711228+0800 NWMobileTill[46614:7498779] Jonge: (null) 

Aber ich immer noch in der Schleife am Ende, wie unten

2017-10-23 11:48:22.711367+0800 NWMobileTill[46614:7498779] In the loop 

Warum funktioniert mein Null-Check nicht?

+0

Mögliche Duplikat [Was ist der Unterschied zwischen \ [NSNull null \] und null?] (Https://stackoverflow.com/questions/836601/whats-the-difference-between-nsnull-null-and -nil) – Balasubramanian

+0

Eng verwandt: [Was ist der Unterschied zwischen (null) vs ?] (https://stackoverflow.com/q/11287590) –

Antwort

0

(null) steht für nil, nicht [NSNull null], so dass die Überprüfung imageUrl != NSNull gelingt.

Sie haben

if (imageUrl) { 

zu schreiben, das ist die gleiche wie

if (imageUrl != nil) { 
+0

Gibt es ein Dokument über die verschiedenen Typen null nil usw.? Ich googelte, konnte aber keinen guten finden –

+2

'NSNull' wird nur in wenigen Fällen verwendet. Matt Thompson schrieb einen [Artikel über 'Nil/Nil/NULL/NSNull'] (http://shipster.com/nil/) – vadian

0

Sie können auch überprüfen, für String leer ist oder nicht.

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

nil steht nichts oder in der technischen Sicht können wir sagen, dass '\0' (nach C-Konzepte). Wann immer wir eine Instanz einer Klasse erstellen, macht Objective C standardmäßig null.

[NSNull null] wird ein Objekt geben. In Objective C ist die Verwendung von begrenzt. Es wird in Sammlungen verwendet (wie NSArray und NSDictionary)

Wie Sie ein NSDictionary verwenden, können Sie es wie folgt überprüfen.

if ([dict objectForKey:@"imageUrl"] != [NSNull null]) { 
    //your code... 
} 
Verwandte Themen