/ / Différence entre l’accès aux valeurs à l’aide de l’indice subscriptif et l’utilisation juste de valueForKey dans NSDictionary - ios, objective-c, nsdictionary

Différence entre l’accès aux valeurs à l’aide de l’indice subscriptif et l’utilisation juste de valueForKey dans NSDictionary - ios, objective-c, nsdictionary

J'ai la ligne suivante:

_driverName.text = [[[responseDictionary valueForKey:@"response" ] valueForKey:@"driverinfo"]valueForKey:@"name"];

Mais je pense pouvoir réduire cette ligne en utilisant l’abonnement de la manière suivante:

_driverName.text = responseDictionary[@"response" ][@"driverinfo"][@"name"];

cela semble plus propre et lisible. Est-il possible d'appliquer cette syntaxe sans conséquences collatérales? Merci d'avance

Réponses:

2 pour la réponse № 1

Ignorer le mauvais usage de valueForKey: (utilisation objectForKey:), vous ne devez utiliser ni l'un ni l'autre exemple dans votre question. Les deux souffrent de l'impossibilité de déboguer lorsque vous rencontrez des problèmes, car la structure de données n'est pas ce que vous pensiez.

Bien que cela prenne plus de temps, il vaut la peine de diviser chaque accès en une ligne distincte:

NSDictionary *response = responseDictionary[@"response"];
NSDictionary *driverInfo = response[@"driverInfo"];
_driverName.text = driverInfo[@"name"];

Mais utiliser la syntaxe moderne en indice est toujours plus facile et moins sujet aux erreurs que d'utiliser objectForKey: et vous assure de ne pas utiliser par erreur valueForKey:.