comment vérifier l'objet null est retourné dans xcode
J'ai un objet NULL est retourné à partir d'une chaîne de requête JSON et je ne sais pas comment vérifier cela dans une instruction if. Ma syntaxe est ci-dessous, mais je n'ai toujours pas semblent être en mesure de piège pour le NULL
classe (c'est à dire, si rien n'est retourné aucun texte n'variable peut être définie, par conséquent, il DOIT être un NULL
de classe?), de toute façon, j'ai besoin de vérifier que le @"BillingStreet"
a en elle quelque chose et si ce n'est pour éviter de la traiter (sinon, l'application se bloque, comme il essaie de définir rien à la valeur de texte de l'un des fields
dans le VC
):
- (void) tableView: (UITableView *)itemTableView didSelectRowAtIndexPath: (NSIndexPath *)indexPath{
NSDictionary *obj = [self.dataCustomerDetailRows objectAtIndex:indexPath.row];
NSString *text = [obj objectForKey:@"BillingStreet"] == nil ? @"0" : [obj objectForKey:@"BillingStreet"];
NSLog(@"%@",text);
if (text.class == NULL){
} else {
NSLog(@"no street");
self.labelCustomerAddress.text = [obj objectForKey:@"BillingStreet"];
}
}
OriginalL'auteur Bartley | 2013-09-20
Vous devez vous connecter pour publier un commentaire.
Un JSON "null" la valeur est convertie en
[NSNull null]
, que vous pouvez vérifierpour avec
parce que c'est un singleton.
Alternativement, vous pouvez vérifier si l'objet contient le type attendu, c'est à dire une chaîne de caractères:
C'est plus robuste dans le cas d'un serveur envoie les données de mauvaise qualité, par exemple un numéro ou un tableau au lieu d'une chaîne.
Je pense que c'est plus efficace, car elle élimine le besoin de créer une variable de type string : 'si ([obj objectForKey:@"BillingStreet"] == (id)[NSNull null])'
Non, l'attribution
text = [obj objectForKey:@"BillingStreet"]
est plus efficace car elle retrives le dictionnaire de valeur qu'une seule fois.A noté, merci pour l'explication.
OriginalL'auteur Martin R
text == nil ? @"0" : text
ou
text ? text : @"0"
Mais si vous l'obtenez à partir de JSON alors vous pouvez obtenir une instance de
NSNull
classe. Dans ce cas, vous devriez vérifiertext && ![text isKindOfClass:[NSNull class]] ? text : @"0"
OriginalL'auteur Ildar Sh