Comment afficher le contenu de la variable NSDictionary dans le débogueur Xcode?

Est-il possible d’afficher les paires clé / valeur d’une variable NSDictionary via le débogueur Xcode? Voici l’étendue de l’information lorsqu’elle est entièrement développée dans la fenêtre de variable:

Variable Value Summary jsonDict 0x45c540 4 key/value pairs NSObject {...} isa 0xa06e0720 

Je m’attendais à ce qu’il montre chaque élément du dictionnaire (similaire à une variable tableau).

Dans la fenêtre gdb, vous pouvez utiliser po pour inspecter l’object.

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 objects, vous pouvez inspecter ce qui est dans le dictionnaire

 (gdb) po dict { bar = foo; buz = fiz; } 

Bien sûr, ce sont des objects NSSsortingng qui s’impriment bien. YMMV avec d’autres objects complexes.

Vous pouvez cliquer avec le bouton droit de la souris sur une variable d’object (ObjC ou Core Foundation) et sélectionner «Imprimer la description dans la console» (également dans Exécuter-> Affichage des variables). Ceci imprime le résultat de la méthode -debugDescription de -debugDescription , qui appelle par défaut -description . Malheureusement, NSDictionary remplace ceci pour produire un tas de données internes dont vous ne vous souciez généralement pas, alors dans ce cas précis, la solution de craigb est meilleure.

Les clés et les valeurs affichées utilisent également -description , donc si vous souhaitez des informations utiles sur vos objects dans les collections et ailleurs, -description est -description . Je l’implémente généralement dans ces lignes, pour correspondre au format de l’implémentation NSObject par défaut:

  - (NSSsortingng *) description
 {
     return [NSSsortingng ssortingngWithFormat: @ "< % @% 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’object sans avoir à imprimer l’object entier dans la console. Prendre plaisir!

Source: http://developer.apple.com/library/mac/#documentation/DeveloperTools/Conceptual/WhatsNewXcode/Articles/xcode_4_6.html

Cliquez sur votre dict, puis cliquez sur la petite icône “i”, ça devrait faire l’affaire 🙂 Xcode5, affiche la valeur d'un dict

Vous pouvez également utiliser NSLog .

Aussi, vous pouvez aller dans la zone de débogage ou xcode, puis trouver All Variables, Registers, Globals and Statics puis sélectionnez votre variable. Clic droit dessus Puis sélectionnez Print description of "...."

J’espère que cela aide!