ios: Comparer NSString à "& lt; null & gt;" ne fonctionne pas
Je suis la consommation d'un service web qui renvoie JSON. L'une des valeurs que j'obtiens est "< null >"
.
Quand je lance la suivante code le si de tresorerie encore exécuté quand il n'est pas suppposed.
Quelle en est la raison?
NSDictionary *location = [dictionary valueForKey:@"geoLocation"]; //get the product name
NSString *latitude = [location valueForKey:@"latitude"];
NSLog(@"%@", latitude);
NSString *longitude = [location valueForKey:@"longitude"];
if (![latitude isEqual: @"<null>"] && ![longitude isEqual: @"<null>"]) {
NSLog(@"%d", i);
CLLocationCoordinate2D coordinate;
coordinate.longitude = [latitude doubleValue];
coordinate.longitude = [longitude doubleValue];
[self buildMarketsList:coordinate title:title subtitle:nil]; //build the browse list product
}
source d'informationauteur wwjdm
Vous devez vous connecter pour publier un commentaire.
Aha. Deux possibilités:
I. Le JSON ne contient pas de latitude et de longitude de l'information. Dans ce cas, les clés ne sont pas présents dans le dictionnaire, vous obtenez de retour, de sorte que vous êtes, en fait, l'obtention d'un
nil
(ouNULL
) pointeur. Que la messagerienil
renvoie zéro, les deux conditions d'incendie (en raison de la négation appliquée). Essayez plutôt ceci:et ne jamais compter sur la description d'un objet.
II. Probablement le JSON contient
null
valeurs, et le parser JSON vous êtes à l'aide de toursnull
en[NSNull null]
et à son tour, vous êtes en train de comparer une chaîne de contre queNSNull
. Dans ce cas, essayez ceci:J'ai eu le même Problème, Mais résolu comme ci-dessous,
Remplacer le votre si avec la suite,
C'est ce que je vais faire. C'est parce que j'ai besoin de stocker de la valeur, même si un retour null.
En règle générale, si vous obtenez la valeur null dans une réponse JSON, vous aurez besoin de vérifier à l'
NSNull
.Dans votre cas, vous devriez faire quelque chose comme ceci: