Jak wyświetlić zawartość zmiennej NSDictionary w debugerze Xcode?
Czy istnieje sposób, aby wyświetlić pary klucz / wartość zmiennej NSDictionary za pomocą debugera Xcode? Oto zakres informacji, gdy jest ona w pełni rozwinięta w oknie zmiennej:
Variable Value Summary
jsonDict 0x45c540 4 key/value pairs
NSObject {...}
isa 0xa06e0720
Spodziewałem się, że pokaże mi każdy element słownika (podobny do zmiennej tablicy).
6 answers
W oknie gdb można użyć po
do sprawdzenia obiektu.
Podane:
NSMutableDictionary* dict = [[NSMutableDictionary alloc] init];
[dict setObject:@"foo" forKey:@"bar"];
[dict setObject:@"fiz" forKey:@"buz"];
Ustawianie punktu przerwania po dodaniu obiektów można sprawdzić, co znajduje się w słowniku
(gdb) po dict
{
bar = foo;
buz = fiz;
}
Oczywiście są to NSString
obiekty, które ładnie drukują. YMMV z innymi złożonymi obiektami.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-22 01:51:12
Możesz kliknąć prawym przyciskiem myszy dowolny obiekt (ObjC lub Core Foundation) i wybrać "Drukuj opis do konsoli" (również w widoku Run->Variables). Wyświetla wynik metody -debugDescription
, która domyślnie wywołuje -description
. Niestety, NSDictionary
nadpisuje to, aby wytworzyć kilka wewnętrznych danych, na których generalnie Ci nie zależy, więc w tym konkretnym przypadku rozwiązanie craigba jest lepsze.
Wyświetlane klucze i wartości również używają -description
, więc jeśli chcesz uzyskać przydatne informacje o swoich obiektach w kolekcjach i gdzie indziej, nadrzędne -description
jest koniecznością. Zazwyczaj implementuję go w następujący sposób, aby dopasować format domyślnej implementacji NSObject
:
-(NSString *) description { return [NSString stringWithFormat:@"<%@ %p>{foo: %@}", [self class], self, [self foo]]; }
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-10-28 20:23:34
Możesz użyć CFShow ()
NSMutableDictionary* dict = [[NSMutableDictionary alloc] init];
[dict setObject:@"foo" forKey:@"bar"];
[dict setObject:@"fiz" forKey:@"buz"];
CFShow(dict);
W wyjściu zobaczysz
{
bar = foo;
buz = fiz;
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-06-27 06:58:53
XCode 4.6 dodał następującą funkcjonalność, która może być dla ciebie pomocna
The elements of NSArray and NSDictionary objects can now be inspected in the Xcode debugger
Teraz możesz sprawdzić te typy obiektów bez konieczności drukowania całego obiektu w konsoli. Smacznego!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-04-19 22:06:15
Kliknij na swój dict, a następnie kliknij na małą ikonkę "i", powinno wykonać zadanie :-)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-11-26 04:48:06
Możesz również użyć NSLog .
Możesz również przejść do obszaru debugowania lub xcode, a następnie dowiedzieć się All Variables, Registers, Globals and Statics
, a następnie wybrać zmienną. Kliknij prawym przyciskiem myszy. Następnie wybierz Print description of "...."
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-12-19 13:56:41