85 votes

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

Est-il un moyen pour afficher les paires clé/valeur d'un NSDictionary variable par le Xcode débogueur? Voici l'étendue de l'information lorsqu'elle est pleinement développée dans la variable de la fenêtre:

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

Je m'attendais à me montrer chaque élément du dictionnaire (similaire à une variable de tableau).

140voto

craigb Points 10622

Dans le gdb fenêtre, vous pouvez utiliser po d'examiner l'objet.

donnée:

NSMutableDictionary* dict = [[NSMutableDictionary alloc] init];
[dict setObject:@"foo" forKey:@"bar"];
[dict setObject:@"fiz" forKey:@"buz"];

fixer un point d'arrêt après que les objets sont ajoutés, vous pouvez inspecter ce qui est dans le dictionnaire

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

Bien sûr, ce sont NSString des objets que l'impression de bien. YMMV avec d'autres objets complexes.

30voto

Jens Ayton Points 11566

Vous pouvez droit-cliquez sur n'importe quel objet (ObjC Base ou de Fondation) de la variable et sélectionnez "Imprimer Description de la Console" (également dans Exécuter->Vue des Variables). Ce imprime le résultat de la obejct de l' -debugDescription méthode, qui, par défaut, les appels -description. Malheureusement, NSDictionary remplace ce afin de produire un tas de données internes de la vous, en général, ne se soucient pas, de sorte que dans ce cas précis craigb la solution est préférable.

L'affichage des clés et des valeurs également utiliser -description, donc si vous voulez des informations utiles sur des objets de collections et d'ailleurs, en substituant -description est un must. De manière générale, j'en œuvre le long de ces lignes, pour correspondre au format de la valeur par défaut NSObject mise en œuvre:

-(NSString *) description
{
 de retour [NSString stringWithFormat:@"<%@ %p>{foo: %@}", [auto], auto, auto toto]];
}

6voto

uranpro Points 51

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;
}

3voto

jkatzer Points 499

XCode 4.6 a ajout de la fonctionnalité suivante, qui peut être utile pour vous

The elements of NSArray and NSDictionary objects can now be inspected in the Xcode debugger

Maintenant, vous pouvez inspecter ces types d'objets sans avoir à imprimer l'ensemble de l'objet dans la console. Profitez-en!

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

0voto

user1873574 Points 83

Vous pouvez également utiliser NSLog.

Vous pouvez aussi aller dans le Debug de la zone ou xcode, puis de trouver All Variables, Registers, Globals and Statics puis sélectionnez votre variable. Cliquez droit sur elle. Ensuite, sélectionnez Print description of "...."

Espérons que cela aide!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X