Pergunta

Existe uma maneira de ver os pares de chave / valor de uma variável NSDictionary através do depurador Xcode? Aqui é a extensão de informação quando se está totalmente expandido na janela de variável:

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

Eu estava esperando que ele me mostrar cada elemento do dicionário (semelhante a uma variável de matriz).

Foi útil?

Solução

Na janela gdb você pode usar po para inspecionar o objeto.

dada:

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

definir um ponto de interrupção depois que os objetos são adicionados você pode inspecionar o que está no dicionário

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

Claro que estas são NSString objetos que imprima bem. YMMV com outros objetos complexos.

Outras dicas

Você pode botão direito do mouse qualquer objeto variável (ObjC ou Foundation Core) e selecione “Imprimir Descrição para Console” (também em Run-> Variáveis ??de vista). Isto imprime o resultado do método -debugDescription do obejct, que por padrão chama -description. Infelizmente, NSDictionary substitui essa para produzir um monte de dados internos a você geralmente não se preocupam, por isso, em solução neste caso de craigb específica é melhor.

As chaves e valores exibidos também usam -description, por isso, se você deseja obter informações úteis sobre seus objetos em coleções e em outros lugares, substituindo -description é uma obrigação. Eu geralmente implementá-lo ao longo destas linhas, para corresponder ao formato da implementação NSObject padrão:

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

Você pode usar CFShow ()

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

Na saída você verá

{
  bar = foo;
  buz = fiz;
}

Xcode 4.6 adicionou as seguintes funcionalidades que podem ser úteis para você

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

Agora você pode inspecionar esses tipos de objetos sem ter que imprimir todo o objeto no console. Divirta-se!

Fonte: http: // developer .apple.com / biblioteca / mac / # documentação / DeveloperTools / conceitual / WhatsNewXcode / artigos / xcode_4_6.html

Clique no seu dict, em seguida, clique no pequeno ícone "i", deve fazer o trabalho :-) Xcode5, ver o valor de um dicionário

Você também pode usar NSLog .

Além disso, você pode ir na área de depuração ou Xcode, e depois descobrir All Variables, Registers, Globals and Statics em seguida, selecione a variável. clique direito sobre ele. Em seguida, selecione Print description of "...."

Espero que ajude!

Se você gostaria de imprimir estes em uma ação de ponto de interrupção no Xcode moderno (sim, eu sou 10 anos após o post original!) Usar a seguinte expressão ponto de interrupção em uma ação "Log Message":

@ myDictionary.description @

Abaixo está um screenshot da minha ação breakpoint onde o evento variável é um NSString ea variável contextData é o NSDictionary que estou registrando o conteúdo: :

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top