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!
XCode 4.6 ha agregado la siguiente funcionalidad que puede ser útil para usted
The elements of NSArray and NSDictionary objects can now be inspected in the Xcode debugger
Ahora puede inspeccionar estos tipos de objetos sin tener que imprimir todo el objeto en la consola. ¡Disfrutar!