Pregunta

¿Hay alguna manera de ver los pares clave/valor de una variable NSDictionary a través del depurador de Xcode?Aquí está el alcance 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).

¿Fue útil?

Solución

En la ventana de gdb puedes 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 hay en el diccionario.

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

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

Otros consejos

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 del objeto. -debugDescription método, que por defecto llama -description.Desafortunadamente, NSDictionary anula esto para producir una gran cantidad de datos internos que generalmente no le interesan, por lo que en este caso específico la solución de Craigb es mejor.

Las claves y valores mostrados también utilizan -description, por lo que si desea información útil sobre sus objetos en colecciones y en otros lugares, anulando -description es un deber.Generalmente lo implemento siguiendo estas líneas, para que coincida con el formato predeterminado NSObject implementación:

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

Puedes usar CFShow()

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

En la salida verás

{
  bar = foo;
  buz = fiz;
}

XCode 4.6 ha agregado la siguiente funcionalidad que puede resultarle útil

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

Ahora puedes inspeccionar estos tipos de objetos sin tener que imprimir el objeto completo en la consola.¡Disfrutar!

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

Haga clic en su dictado, luego haga clic en el pequeño ícono "i", debería funcionar :-)Xcode5, view the value of a dict

También puedes usar NSLog.

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

¡Espero eso ayude!

Si desea imprimirlos en una acción de punto de interrupción en XCode moderno (sí, ¡estoy 10 años después de la publicación original!), use la siguiente expresión de punto de interrupción en una acción "Registrar mensaje":

@miDiccionario.descripción@

A continuación se muestra una captura de pantalla de mi acción de punto de interrupción donde el evento variable es un NSString y la variable contextData es el NSDictionary cuyo contenido estoy registrando::

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top