Objective-C comment vérifier si une chaîne est nulle
DONC
Je voudrais vérifier pour voir si l'élément dans mon tableau [clientDataArray objectForKey:@"ClientCompany"]
est nil
.
temp = [clientDataArray objectForKey:@"ClientCompany"];
if (temp != [NSNull null]) infofieldCompany.text = temp;
Jusqu'à présent j'ai été en mesure d'atteindre cet objectif par le code ci-dessus, mais il me donne les avertissements
- avertissement:
NSArray
ne peut pas répondre à-objectForKey:
- avertissement: comparaison de différentes
Objective-C typesstruct NSNull *
etstruct NSString *
manque un cast
Mon intérêt principal est le deuxième avertissement, mais le premier avertissement aussi m'intéresser.
Comment dois-je adapter mon code ci-dessus?
source d'informationauteur oberbaum
Vous devez vous connecter pour publier un commentaire.
Votre premier avertissement semble que vous essayez d'appeler
objectForKey
sur unNSArray
. Ce qui n'est pas d'aller travailler, commeNSArray
n'a pas deobjectForKey
méthode.Comme pour le deuxième avertissement, vous pouvez simplement comparer directement avec le néant, c'est à dire:
ou depuis zéro est équivalent à 0, vous pouvez aussi simplement faire:
Après avoir essayé toutes les options, je pense que c'est la meilleure option pour comapre NSString null
À la fois des réponses déjà donné manqué un point fondamental: vous ne pouvez pas mettre
nil
dans un tableau, donc vous ne serez jamaisnil
d'un tableau. À l'aide deNSNull
comme un espace réservé dans un tableau est la bonne chose à faire, cependant votre variabletemp
ne peut pas être déclaré comme unNSString *
comme il peut ne pas en être un. UtiliserNSObject *
ouid
que le type de la variable à supprimer la comparaison d'avertissement.La meilleure solution pour tester la valeur NULL ou Vide de valeurs:
Calme simple
Je pense que le problème est (je veux dire le deuxième avertissement), c'est que vous êtes en comparant NSString objet, qui pourrait être mis à null pour un NSNull objet.
Avez-vous essayé l'habitude C moyen de vérifier null?
Je ne suis pas 100% sûr à ce sujet, mais vous pouvez essayer. Si vous l'avez fait, désolé de ne pas fournir des informations plus utiles.
Bonne chance!
La
NSNull
singleton peut être utilisé pour construire "entrelacé" tableaux comme obj0, obj1, obj2, NSNull, obj3, NSNull, ..., néant.NSArray ne pas mettre en œuvre
objectForKey
.Votre code crash au moment de l'exécution (si
clientDataArray
a été alloué et initialisé)Vous pouvez accéder aux éléments d'un tableau par index (objectAtIndex:).
Si vous avez besoin d'associer des objets avec des touches, jetez un oeil à NSDictionary.
Je ne suis pas par un effort de l'imagination d'un Obj-C ou de Cacao, expert en C/C++, vous pouvez utiliser quelque chose comme:
si(somePtr != NULL)
Et, sauf si vous explicitement, mis à NULL ou changé de ce qu'il a été pointant vers,
vous pouvez être certain, qu'il est, en fait, Pas Null ou Null (ce que jamais vous avez été à la recherche pour...)
Mais j'ai remarqué (mon expérience personnelle de toute façon) qu'en Obj-C,
Si vous faites quelque chose comme:
si(someObj != néant) ou, à l'inverse,
Il n'y a pas de Garantie, il vous dira que c'est un VÉRITABLE statut de...
Donc (après avoir été en contact avec un tas de se bloque) lorsque je traite avec de l'Obj-C (BS), pour être sûr, j'ai toujours un BOOLÉEN ou un drapeau mis en place pour le suivi de son état, de sorte que vous ne finissent pas Gratuit-ing, excusez-moi... "Libération" -ing" quelque chose qui a déjà libéré...
Même si cette question est ancienne, j'espère que Ma Réponse sera aider quelqu'un d'autre.
Vous pouvez essayer ce