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
Comme ça:
[myString isEqual: [NSNull null]];
Il existe trois interprétations possibles de la chaîne NSString "nulle":
someStringPtr == nil
(id)someStringPtr == [NSNull null]
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.
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
.
Essayez if(myString == [NSNull null])
. Cela devrait l'évaluer correctement.
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