Comment vérifier la valeur NULL dans NSString dans iOS?
J'ai un NSString
et je veux vérifier si elle a un NULL
valeur. Si c'est le cas, le if
état doit s'exécuter. Sinon, il faut exécuter la else
condition.
Ci-dessous le code que j'utilise:
if ([appDelegate.categoryName isEqual:[NSNull null]])
{
select = [[NSString alloc] initWithFormat:@"select * FROM ContentMaster LEFT JOIN Category ON ContentMaster.CategoryID=Category.CategoryID where ContentMaster.ContentTagText='%@'", appDelegate.tagInput];
}
else
{
select = [[NSString alloc] initWithFormat:@"select * FROM ContentMaster LEFT JOIN Category ON ContentMaster.CategoryID=Category.CategoryID LEFT JOIN Topic ON ContentMaster.TopicID=Topic.TopicID where ContentMaster.ContentTagText='%@' && Category.CategoryName='%@' && Topic.TopicName='%@'", appDelegate.tagInput, appDelegate.categoryName, appDelegate.topicName];
}
Il s'exécute toujours la else
condition, et de ne jamais le if
condition, même lorsque la valeur est NULL
.
- Montrez-moi votre valeur null.
- Depuis NSNull est un singleton, vous pouvez comparer les pointeurs directement: si (appDelegate.categoryName == [NSNull null])
- plutôt que de comparer les pointeurs utiliser pour vérifier qu'il est isKindOfClass[NSNull Classe]. voir mon sna
- double possible de Quelle est la bonne façon de rechercher une chaîne nulle en Objective-C?
Vous devez vous connecter pour publier un commentaire.
En Objective-C et Cocoa, la propriété ne peut pas être réglé, c'est
nil
—ou il peut être la représentation d'objet denil
, qui est une instance deNSNull
. Vous voulez probablement à vérifier pour l'une de ces conditions, comme ceci:Exécute le néant de la branche si la
categoryName
propriété est définie ànil
(la valeur par défaut pour toutes les propriétés), ou si elle a été explicitement définie à l'NSNull
singleton.select
est nul?nil
vérifier.La valeur NULL pour Objective-C (objets de type id) est nul.
Alors que NULL est utilisée pour C les pointeurs (de type void *).
(À la fin, les deux finissent par la même valeur (0x0). Ils diffèrent dans le type de cependant.)
En Objective-C:
Afin de vérifier contre NSNull on peut soit utiliser:
ou si l'on veut omettre la nécessité de casting pour NSNull:
Essayez d'utiliser cette. Vérifiez que votre valeur est le genre de NULLE classe ou pas plutôt que de comparer les Pointeurs de valeur.
NSNull
singleton. Vous devez également vérifier si la propriété n'est tout simplement pas mis (presque certainement le problème ici). Éviter de faire de la classe des comparaisons, surtout quand la majorité du temps, ils vont à l'échec—qui est, cette valeur ne va pas être laNSNull
singleton.SAFESTRING("PASS_OBJECT_HERE");
De son mieux pour être sur le côté plus sûr de vérifier les valeurs null , car elle peut conduire à l'accident.
Utiliser le code suivant:
Dans l'Exemple -1, myString ne contient rien. Donc la sortie est:
Dans l'Exemple -2, sampleString contient une certaine valeur. Donc la sortie est:
Il suffit de passer votre chaîne dans la Méthode 🙂
Vous pouvez le faire en utilisant -
[NSNull class]
Ajouter un contrôle supplémentaire pour la longueur aussi. Ce sera certainement le travail.
[appDelegate.categoryName isEqual:[NSNull null]] && appDelegate.categoryName.length > 0
vous pourrez vous rafraîchir sur boolean arithmétique.categoryName
est leNSNull
singleton, il ne répond pas à unelength
message.