objective-c cocoa xcode debugging

objective c - ¿Cómo ver los contenidos de la variable NSDictionary en el depurador Xcode?



objective-c cocoa (6)

¿Hay alguna manera de ver los pares clave / valor de una variable NSDictionary a través del depurador Xcode? Aquí está la extensión de la información cuando está completamente expandida en la ventana de variables:

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

Esperaba que me mostrara cada elemento del diccionario (similar a una variable de matriz).


En la ventana gdb puede usar po para inspeccionar el objeto.

dado:

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

Al establecer un punto de interrupción después de agregar los objetos puede inspeccionar lo que está en el diccionario

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

Por supuesto, estos son objetos NSString que se imprimen muy bien. YMMV con otros objetos complejos.


Haga clic en su dict, luego haga clic en el pequeño icono "i", debería hacer el trabajo :-)


Puede hacer clic con el botón derecho en cualquier variable de objeto (ObjC o Core Foundation) y seleccionar "Imprimir descripción en la consola" (también en Ejecutar-> Vista de variables). Esto imprime el resultado el método de -debugDescription -debug de -debugDescription , que por defecto llama -description . Desafortunadamente, NSDictionary anula esto para producir un conjunto de datos internos que generalmente no te importan, por lo que en este caso específico, la solución de craigb es mejor.

Las claves y los valores mostrados también usan -description , por lo que si desea información útil sobre sus objetos en colecciones y en cualquier otro lugar, anular -description es obligatorio. Generalmente lo implemento a lo largo de estas líneas, para que coincida con el formato de la implementación predeterminada de NSObject :

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


Puede usar CFShow ()

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

En salida verás

{ bar = foo; buz = fiz; }


También puedes usar NSLog .

También puede ir en el área de depuración o xcode, luego descubrir All Variables, Registers, Globals and Statics luego seleccione su variable. Haga clic derecho sobre él. Luego seleccione Print description of "...."

¡Espero eso ayude!