Vérifiez si NSDictionary est Null?
J'ai essayé de plusieurs façons. Je sais que le dictionnaire est NULL, la console affiche lorsque je me casse de là. Pourtant, quand je l'ai mis dans un if( ) il ne se déclenche pas.
([myDict count] == 0) //results in crash
(myDict == NULL)
[myDict isEqual:[NSNull null]]
source d'informationauteur mondousage
Vous devez vous connecter pour publier un commentaire.
Il semble que vous avez un pendantes ou sauvages pointeur.
Vous pouvez envisager d'Objective-C des objets comme des pointeurs vers des structures.
Vous pouvez ensuite bien sûr de les comparer avec
NULL
ou avec d'autres pointeurs.Donc:
et
sont tous les deux valides.
La première fois pour vérifier si le pointeur est
NULL
.NULL
est généralement défini comme unvoid *
avec une valeur de 0.Notez que, pour Objective-C objets, nous utilisons habituellement
nil
.nil
est également défini comme unvoid *
avec une valeur de 0, donc elle est égale àNULL
. C'est juste ici pour désigner unNULL
pointeur vers un objet, plutôt qu'un pointeur.Le second compare l'adresse de
myDict
avec l'instance du singleton de laNSNull
classe. Si vous êtes ici, la comparaison de deux pointeurs de valeurs.Afin de reprendre rapidement:
Et comme
[ NSNull null ]
est une instance valide:Maintenant à ce sujet:
Il peut tomber en panne si vous avez un sauvage pointeur:
Sauf si vous utilisez un ARC, il va sûrement crash, car la
myDict
variable n'a pas été initialisé, et peut en fait montrer quoi que ce soit.Il peut également se bloquer si vous avez un bancales pointeur:
Puis vous essayez d'envoyer un message à une désallocation de l'objet.
Envoyer un message à
nil
/NULL
est toujours valide en Objective-C.Donc, cela dépend de si vous voulez vérifier si un dictionnaire est
nil
ou si elle ne dispose pas des valeurs (comme valide dictionnaire instance peut être vide).Dans le premier cas, de comparer avec
nil
. Sinon, vérifie si le nombre est 0, et vous assurer que vous êtes en instance est toujours valide. Peut-être vous avez juste oublié de conserver quelque part.Tous les ci-dessus ne fonctionne pas pour moi, mais ce
A fonctionné pour moi
Pour vérifier si un dictionnaire est nul ou NULLE de données, vous pouvez vérifier pour la [dictionnaire comte, qui sera de retour 0 dans tous les cas