2010-06-02 4 views
1

Je souhaite détecter si le passage d'un NSString à NSLog renvoie (null). J'ai essayé if (string == @"") {do something}" et if (string == @"(null)") {do something}" mais aucun ne semble fonctionner. Tout avis serait grandement apprécié!Détection (nulle) dans Objective-C

+0

Ce ne sont pas des comparaisons; ce sont des missions. Donc, ils ne fonctionneraient pas même si c'était en fait la bonne façon de vérifier pour rien. – Chuck

+0

Oups, merci d'avoir attrapé ça. – John

Répondre

9

Votre "NSString" est en fait un pointeur sur un NSString (à savoir un NSString *). Un pointeur nul en C est simplement un pointeur avec la valeur 0; en C, 0 est false, de sorte que ce qui suit est simple et idiomatiques:

NSString *str = ...; 
if (str) { 
    /// str is not null 
} 

(ps: Vos comparaisons avec @"" et @"(null)" comparent les adresses des pointeurs NSString, pas les valeurs, de comparer NSStrings, regardez -isEqualToString:.)

+0

Y at-il une raison d'aller plus loin avec: if (str === NULL)? – pxl

+0

Eh bien, C (et donc Objective-C) n'a pas d'opérateur '===', mais vous êtes libre d'utiliser '==' ou tout autre opérateur booléen. Ce n'est tout simplement pas nécessaire, de la même manière qu'écrire 'if (some_bool == YES)' est la même chose que 'if (some_bool)', avec juste plus de caractères. – kevingessner

+0

@pxi: Il est plus idiomatique dans Objective-C de comparer les objets à «nil» plutôt qu'à «NULL». Ils se résument à la même chose cependant. – dreamlax

6
if (string == nil) { 
    do_something; 
}