" ne fonctionne pas - Retrouvez les réponses et les commentaires concernant cette question" />
Je prends un service Web qui retourne JSON strong>. L'une des valeurs que je reçois est Lorsque j'exécute le code Follwoining, la déclaration si elle est toujours exécutée lorsqu'elle n'est pas supposée. P> Une raison pour laquelle? p> "
4 Réponses :
Je prends un service Web qui retourne JSON. Une des valeurs que je reçois est "
" p> aha. Deux possibilités: p>
i. Le JSON ne contient pas d'informations de latitude et de longitude. Dans ce cas, les clés pour eux ne sont pas présentes dans le dictionnaire que vous revenez, vous obtenez donc en réalité un
nil code> (ou
null code>). Comme la messagerie
nil code> renvoie zéro, les deux conditions vont tirer (en raison de la négation appliquée). Essayez cela à la place: p>
xxx pré> et ne s'appuie jamais sur la description d'un objet. Strong> p>
II. Probablement le JSON contient des valeurs code> null code> et l'analyseur JSON utilisez les virages
null code> dans
[nsnull null] code>, et à son tour vous êtes essayer de comparer une chaîne contre ce
nsnull code>. Dans ce cas, essayez ceci: p>
xxx pré> blockQuote>
@Anupdas merci. Je ne sais pas pourquoi quelqu'un pensait que c'est faux.
@Elimiller c'est la description de [nsnull NULL] code>. Vous devriez également lire la documentation de
nslog () code> plus attentivement.
Typiquement si vous obtenez NULL dans une réponse JSON, vous devez vérifier contre Dans votre cas, vous devriez faire quelque chose comme ceci: p> nsnull code>.
if ( [location valueForKey:@"longitude"] == [NSNull null]) {
// is null object
}
Veuillez ne pas comparer les objets en utilisant == code>.
"Pour tester une valeur d'objet nulle, vous devez donc faire une comparaison directe d'objet." - Directement de la documentation d'Apple. Ils font une comparaison directe d'objet en utilisant == avant d'utiliser ISequal. développeur.apple.com/library/ios / # documentation / cacao / concept ual / ...
@ H2CO3 - Je ne comparais presque jamais d'objets à l'aide de == sauf ceci ... Sauf si la documentation d'Apple n'a pas mal.
J'ai eu le même problème, mais j'ai été résolu comme ci-dessous, Remplacez votre si avec suivant,
if (![latitude isKindOfClass:[NSNull class]] && ![longitude isKindOfClass:[NSNull class]])
if ([latitude isEqual:[NSNull null]]) { //do something latitude = @""; } else { //do something else latitude = json value } This is what I will do. This is because I need to store the value even if a null return.