Domanda

Esiste un modo per visualizzare le coppie chiave / valore di una variabile NSDictionary tramite il debugger Xcode? Ecco l'estensione delle informazioni quando sono completamente espanse nella finestra delle variabili:

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

Mi aspettavo che mi mostrasse ogni elemento del dizionario (simile a una variabile di matrice).

È stato utile?

Soluzione

Nella finestra di gdb puoi usare po per ispezionare l'oggetto.

data

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

impostando un punto di interruzione dopo l'aggiunta degli oggetti è possibile ispezionare ciò che è nel dizionario

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

Naturalmente questi sono oggetti NSString che stampano bene. YMMV con altri oggetti complessi.

Altri suggerimenti

Puoi fare clic con il pulsante destro del mouse su qualsiasi oggetto (ObjC o Core Foundation) e selezionare & # 8220; Stampa descrizione su console & # 8221; & nbsp; (anche nella vista Variabili di esecuzione). Questo stampa il risultato del metodo -debugDescription obejct, che per impostazione predefinita chiama -description . Sfortunatamente, NSDictionary ha la precedenza su questo per produrre un mucchio di dati interni di cui di solito non ti preoccupi, quindi in questo caso specifico la soluzione di Craigb è migliore.

Le chiavi e i valori visualizzati usano anche -description , quindi se vuoi informazioni utili sui tuoi oggetti in raccolte e altrove, è necessario sostituire -description . In genere lo implemento in questo modo, in modo che corrisponda al formato dell'implementazione NSObject predefinita:

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

Puoi usare CFShow ()

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

In output vedrai

{
  bar = foo;
  buz = fiz;
}

XCode 4.6 ha aggiunto le seguenti funzionalità che potrebbero esserti utili

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

Ora puoi ispezionare questi tipi di oggetti senza dover stampare l'intero oggetto nella console. Buon divertimento!

Fonte: http: // developer .apple.com / library / mac / # documentazione / DeveloperTools / concettuale / WhatsNewXcode / articoli / xcode_4_6.html

Fai clic sul tuo dict, quindi fai clic sul piccolo " i " icona, dovrebbe fare il lavoro :-) Xcode5, visualizza il valore di un dict

Puoi anche utilizzare NSLog .

Inoltre puoi andare nell'area Debug o xcode, quindi scoprire Tutte le variabili, i registri, i globuli e le statistiche quindi selezionare la tua variabile. Fai clic destro su di esso. Quindi seleziona Stampa la descrizione di " .... "

Spero che sia d'aiuto!

Se desideri stamparli in un'azione di breakpoint nel moderno XCode (sì, sono 10 anni dopo il post originale!) usa la seguente espressione di breakpoint in un "Messaggio di log" " Azione:

@ myDictionary.description @

Di seguito è riportato uno screenshot della mia azione breakpoint in cui l'evento variabile è un NSString e la variabile contextData è NSDictionary di cui sto registrando il contenuto di: :

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top