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.

War es hilfreich?

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!

Quelle: http: // Entwickler .apple.com / library / mac / # Dokumentation / DeveloperTools / Conceptual / WhatsNewXcode / Artikel / xcode_4_6.html

auf Ihrem dict Klicken, dann klicken Sie auf das kleine „i“ -Symbol, sollte die Arbeit machen :-) Xcode5, sehen den Wert eines dict

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: :

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top