web-dev-qa-db-fra.com

comment vérifier que NSString est nul ou non

Je veux vérifier la météo a NSString est nul ou non. Im affectation à partir d'un tableau JSON. Après avoir attribué cette valeur de chaîne est <null>. Maintenant, je veux vérifier que cette chaîne est nulle ou non. Donc je mets comme ça

if (myStringAuthID==nil) mais cette instruction if est toujours fausse. Comment puis-je vérifier une chaîne pour null. Aidez-moi, s'il vous plaît

Merci

19
user2889249

Comme ça:

[myString isEqual: [NSNull null]];
62
Mirko Catalano

Il existe trois interprétations possibles de la chaîne NSString "nulle":

  1. someStringPtr == nil
  2. (id)someStringPtr == [NSNull null]
  3. someStringPtr.length == 0

Si vous pouvez avoir la possibilité de tous les 3, le 3e contrôle résume le premier, mais je ne connais pas de simple contrôle pour les trois.

En général, JSON renvoie [NSNull null] pour une valeur JSON null, mais certains kits peuvent renvoyer @"" (longueur == 0) à la place. nil ne sera jamais utilisé dans iOS car il ne peut pas être placé dans des tableaux/dictionnaires.

10
Hot Licks

Je pense que c'est mieux si vous vérifiez avant de le lancer sur une chaîne NSString ou autre, vous avez différentes options, les options ci-dessus sont correctes, mais je préfère ceci:

id NilOrValue(id aValue) {
  if ((NSNull *)aValue == [NSNull null]) {
    return nil;
  }
  else {
    return aValue;
  }
}

À l'aide de cet extrait (faites attention à une fonction C) avant de transmettre la valeur à un pointeur, vous pouvez transmettre une valeur nulle ou nulle si la valeur dans NSNull. Passer nil est super, car si vous envoyez un message à un objet nil, il ne lève pas d'exception. Vous pouvez également vérifier le type de classe avec -isKindOfClass.

1
Andrea

Essayez if(myString == [NSNull null]). Cela devrait l'évaluer correctement.

1
Nicholas Smith

Voici une partie d'une catégorie de chaîne que j'ai créée:

@interface NSString (Enhancements)

+(BOOL)isNullOrEmpty:(NSString *)inString;

@end

@implementation NSString (Enhancements)

+(BOOL)isNullOrEmpty:(NSString *)inString
{
    BOOL retVal = YES;

    if( inString != nil )
    {
        if( [inString isKindOfClass:[NSString class]] )
        {
            retVal = inString.length == 0;
        }    
        else
        {
            NSLog(@"isNullOrEmpty, value not a string");
        }
    }
    return retVal;
}

@end
1
JonahGabriel