it-swarm.com.de

Wie kann ich den Inhalt der NSDictionary-Variablen im Xcode-Debugger anzeigen?

Gibt es eine Möglichkeit, die Schlüssel/Wert-Paare einer NSDictionary-Variablen über den Xcode-Debugger anzuzeigen? Hier ist der Informationsumfang, wenn er im Variablenfenster vollständig erweitert ist:

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

Ich hatte erwartet, dass es mir jedes Element des Wörterbuchs zeigt (ähnlich wie eine Array-Variable).

84
Dara Kong

Im GDB-Fenster können Sie das Objekt mit po untersuchen.

gegeben:

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

wenn Sie nach dem Hinzufügen der Objekte einen Haltepunkt festlegen, können Sie überprüfen, was sich im Wörterbuch befindet

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

Natürlich sind dies NSString Objekte, die gut gedruckt werden. YMMV mit anderen komplexen Objekten.

138
craigb

Sie können mit der rechten Maustaste auf eine beliebige Objektvariable (ObjC oder Core Foundation) klicken und "Beschreibung auf Konsole drucken" auswählen (auch in der Ansicht "Ausführen" -> "Variablen"). Das Ergebnis wird mit der Methode -debugDescription Des Objekts ausgegeben, die standardmäßig -description Aufruft. Leider überschreibt NSDictionary dies, um eine Reihe von internen Daten zu erstellen, die Sie normalerweise nicht interessieren. In diesem speziellen Fall ist die Lösung von craigb daher besser.

Die angezeigten Schlüssel und Werte verwenden auch -description. Wenn Sie also nützliche Informationen zu Ihren Objekten in Sammlungen und an anderer Stelle benötigen, müssen Sie -description Überschreiben. Ich implementiere es im Allgemeinen so, dass es dem Format der Standardimplementierung NSObject entspricht:

- (NSString *) description 
 {
 Return [NSString stringWithFormat: @ "<% @% p> {foo:% @}", [self class], self, [self foo]] ; 
}
30
Jens Ayton

Sie können CFShow () verwenden

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

In der Ausgabe sehen Sie

{
  bar = foo;
  buz = fiz;
}
6
uranpro

XCode 4.6 hat die folgenden Funktionen hinzugefügt, die für Sie hilfreich sein können

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

Jetzt können Sie diese Objekttypen überprüfen, ohne das gesamte Objekt in der Konsole drucken zu müssen. Genießen!

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

3
jkatzer

Klicke auf dein Diktat und dann auf das kleine "i" -Symbol, es sollte den Job erledigen :-) Xcode5, view the value of a dict

1
Taiko

Wenn Sie diese in einer Haltepunktaktion in modernem XCode drucken möchten (ja, ich bin 10 Jahre nach dem ursprünglichen Beitrag!), Verwenden Sie den folgenden Haltepunktausdruck in einer Aktion "Protokollnachricht":

@ myDictionary.description @

Unten ist ein Screenshot meiner Haltepunktaktion, bei der das variable Ereignis ein NSString ist und die Variable contextData das NSDictionary ist, dessen Inhalt ich protokolliere: :

1
Pat

Sie können auch NSLog verwenden.

Du kannst auch in den Debug-Bereich oder in den Xcode gehen und dann herausfinden, All Variables, Registers, Globals and Statics dann wählen Sie Ihre Variable. Klicken Sie mit der rechten Maustaste darauf. Dann wählen Sie Print description of "...."

Ich hoffe es hilft!

0
user1873574