Existe-t-il un moyen d'afficher les paires clé/valeur d'une variable NSDictionary via le débogueur Xcode? Voici l'étendue des informations lorsqu'elles sont entièrement développées dans la fenêtre variable:
Variable Value Summary
jsonDict 0x45c540 4 key/value pairs
NSObject {...}
isa 0xa06e0720
Je m'attendais à ce qu'il me montre chaque élément du dictionnaire (similaire à une variable de tableau).
Dans la fenêtre gdb, vous pouvez utiliser po
pour inspecter l'objet.
donné:
NSMutableDictionary* dict = [[NSMutableDictionary alloc] init];
[dict setObject:@"foo" forKey:@"bar"];
[dict setObject:@"fiz" forKey:@"buz"];
définir un point d'arrêt après l'ajout des objets, vous pouvez inspecter ce qui se trouve dans le dictionnaire
(gdb) po dict
{
bar = foo;
buz = fiz;
}
Bien sûr, ce sont des objets NSString
qui s’impriment bien. YMMV avec d'autres objets complexes.
Vous pouvez cliquer avec le bouton droit sur n'importe quelle variable d'objet (ObjC ou Core Foundation) et sélectionner "Imprimer la description sur la console" (également dans la vue Exécuter-> Variables). Ceci imprime le résultat de la méthode -debugDescription
De l’objet, qui par défaut appelle -description
. Malheureusement, NSDictionary
remplace cela pour produire un tas de données internes dont vous ne vous souciez généralement pas, donc dans ce cas spécifique, la solution de craigb est meilleure.
Les clés et valeurs affichées utilisent également -description
, Donc si vous voulez des informations utiles sur vos objets dans les collections et ailleurs, remplacer -description
Est un must. Je l'implémente généralement dans ce sens, pour correspondre au format de l'implémentation par défaut NSObject
:
- (NSString *) description { Renvoie [NSString stringWithFormat: @ "<% @% p> {foo:% @}", [self class], self, [self foo]] ; }
Vous pouvez utiliser CFShow ()
NSMutableDictionary* dict = [[NSMutableDictionary alloc] init];
[dict setObject:@"foo" forKey:@"bar"];
[dict setObject:@"fiz" forKey:@"buz"];
CFShow(dict);
En sortie, vous verrez
{
bar = foo;
buz = fiz;
}
XCode 4.6 a ajouté les fonctionnalités suivantes qui peuvent vous être utiles
The elements of NSArray and NSDictionary objects can now be inspected in the Xcode debugger
Vous pouvez maintenant inspecter ces types d'objets sans avoir à imprimer l'intégralité de l'objet dans la console. Prendre plaisir!
Cliquez sur votre dict, puis cliquez sur la petite icône "i", elle devrait faire l'affaire :-)
Si vous souhaitez les imprimer dans une action de point d'arrêt dans le XCode moderne (oui, je suis 10 ans après la publication d'origine!), Utilisez l'expression de point d'arrêt suivante dans une action "Log Message":
@ myDictionary.description @
Ci-dessous est une capture d'écran de mon action de point d'arrêt où l'événement variable est une chaîne NSS et la variable contextData est le NSDictionary dont j'enregistre le contenu: :
Vous pouvez également utiliser NSLog .
Vous pouvez également aller dans la zone de débogage ou xcode, puis découvrir All Variables, Registers, Globals and Statics
puis sélectionnez votre variable. Faites un clic droit dessus. Sélectionnez ensuite Print description of "...."
J'espère que ça aide!