Est nul et (NSString *)[NSNull null] équivalent à vérifier vide NSString objet

J'ai un NSString objet,

NSString *aString;

sont donc les deux versions suivantes équivalent?

Version 1 :

if ( (NSString *)[NSNull null] == aString )
{
   //Logic handling
}

Version 2 :

if ( nil == aString )
{
   //Logic handling
}

De Référence Des Postes

  1. Différence entre nul, Nul et nul

  2. Comment détecter si NSString est nulle?

  3. Apple NSNull de Référence de Classe

  4. Comment tester si une chaîne est vide en Objective-C?

Mise À Jour Des Résultats

Mon simple résultat du test montre que les deux versions ont des comportements différents:

  1. Quand aString est initialisé, puis assigné à nil:

    false pour l'expression dans la version 1,

    true pour l'expression dans la version 2.

  2. Quand aString est initialisé avec la valeur de @"".

    false pour l'expression dans la version 1,

    false pour l'expression dans la version 2.

Il est donc clair que les deux versions ne sont pas identiques dans leur comportement.

Le code de test:

NSString *aString = nil;
NSString *bString = [NSString stringWithFormat:@""];

if ((NSString *)[NSNull null] == aString) {
    NSLog(@"a1 - true");
} else {
    NSLog(@"a1 - false");
}

if (nil == aString) {
    NSLog(@"a2 - true");
} else {
    NSLog(@"a2 - false");
}

if ((NSString *)[NSNull null] == bString) {
    NSLog(@"b1 - true");
} else {
    NSLog(@"b1 - false");
}

if (nil == bString) {
    NSLog(@"b2 - true");
} else {
    NSLog(@"b2 - false");
}

Sortie de la Console:

2013-10-31 00:56:48.132 emptyproject[31104:70b] a1 - false
2013-10-31 00:56:48.133 emptyproject[31104:70b] a2 - true
2013-10-31 00:56:48.133 emptyproject[31104:70b] b1 - false
2013-10-31 00:56:48.133 emptyproject[31104:70b] b2 - false

Mise à jour - Que Dois-je Dire "chaîne Vide ("**

Maintenant, j'ai fait plus clair que c'est différent pour un NSString objet à nil et, pour être valide initialisé exemple la tenue d'un vide de la chaîne de valeur de @"". Ce que j'ai vraiment besoin dans ce post, c'est que la façon de tester si mon NSString objet est initialisé, qui est, si aString est nil. Je veux savoir si il y a une différence pour les deux versions de test de code.

Comment pourraient-ils équivalents?
@Sulthan, donc je ne peux pas remplacer if ( aString == (NSString *)[NSNull null] ) avec if ( aString == nil )?
Pas de. Qu'essayez-vous de faire?
c'est l'équivalent, mais vous bande de moins de code 🙂
Vous devez analyser dictioaries intelligemment. L'utilisation d'une catégorie sur NSDictionary pour convertir NSNull à nil automatiquement.

OriginalL'auteur George | 2013-10-30