Wie Inhalt NSDictionary Variable in Xcode Debugger sehen?
-
02-07-2019 - |
Frage
Gibt es eine Möglichkeit, die Schlüssel / Wert-Paare einer NSDictionary Variable durch den Xcode-Debugger zu sehen? Hier ist der Umfang der Informationen, wenn sie vollständig in dem Variablenfenster erweitert wird:
Variable Value Summary
jsonDict 0x45c540 4 key/value pairs
NSObject {...}
isa 0xa06e0720
Ich erwarte es mir jedes Element des Wörterbuchs (ähnlich eine Array-Variablen) zu zeigen.
Lösung
Im gdb Fenster können Sie po
, um das Objekt zu untersuchen.
gegeben:
NSMutableDictionary* dict = [[NSMutableDictionary alloc] init];
[dict setObject:@"foo" forKey:@"bar"];
[dict setObject:@"fiz" forKey:@"buz"];
Setzen Sie einen Haltepunkt, nachdem die Objekte hinzugefügt werden, können Sie prüfen, was im Wörterbuch enthalten ist
(gdb) po dict
{
bar = foo;
buz = fiz;
}
Natürlich sind NSString
Objekte, die sich gut drucken. YMMV mit anderen komplexen Objekten.
Andere Tipps
Sie können mit der rechten Maustaste auf ein beliebiges Objekt (ObjC oder Core Foundation) Variable und wählen Sie „Drucken Beschreibung Console“ (auch in Run-> Variablen View). Dies gibt das Ergebnis der -debugDescription
Methode des obejct, die standardmäßig Anrufe -description
. Leider überschreibt NSDictionary
dies eine Reihe von internen Daten zu erzeugen, die Sie in der Regel nicht interessieren, so dass in diesem speziellen Fall craigb Lösung besser ist.
Die angezeigten Tasten und Werte auch -description
verwenden, also, wenn Sie nützliche Informationen über Ihre Objekte in einer Sammlung wollen und anderswo -description
zwingenden ist ein Muss. Ich implementieren es in der Regel in diese Richtung, um das Format der Standard NSObject
Implementierung übereinstimmen:
-(NSString *) description { return [NSString stringWithFormat:@"<%@ %p>{foo: %@}", [self class], self, [self foo]]; }
Sie können mit CFShow ()
NSMutableDictionary* dict = [[NSMutableDictionary alloc] init];
[dict setObject:@"foo" forKey:@"bar"];
[dict setObject:@"fiz" forKey:@"buz"];
CFShow(dict);
In Ausgabe werden Sie sehen,
{
bar = foo;
buz = fiz;
}
XCode 4.6 hat die folgenden Funktionen hinzugefügt, die Ihnen nützlich 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 zu drucken ist. Genießen Sie!
auf Ihrem dict Klicken, dann klicken Sie auf das kleine „i“ -Symbol, sollte die Arbeit machen :-)
Sie können auch verwenden NSLog .
Sie können auch im Debug-Bereich oder Xcode gehen, dann All Variables, Registers, Globals and Statics
herausfinden, dann Variable auswählen. Rechten Maustaste darauf. Wählen Sie dann Print description of "...."
Hoffe, es hilft!
Wenn Sie möchten dieses in einer Unterbrechungsaktion in der modernen XCode drucken (ja, ich bin 10 Jahre nach dem Original-Beitrag!) Verwenden Sie den folgenden Haltepunkt Ausdruck in einer „Protokollmeldung“ Aktion:
@ myDictionary.description @
Im Folgenden finden Sie einen Screenshot von meiner Unterbrechungsaktion, wo das Variable Ereignis ein NSString und die Variable contextData ist die NSDictionary ist, dass ich den Inhalts bin Anmeldung: :