Как просмотреть содержимое переменной NSDictionary в отладчике Xcode? - PullRequest
84 голосов
/ 22 сентября 2008

Есть ли способ просмотреть пары ключ / значение переменной NSDictionary через отладчик Xcode? Вот степень информации, когда она полностью раскрывается в окне переменных:

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

Я ожидал, что он покажет мне каждый элемент словаря (аналогично переменной массива).

Ответы [ 7 ]

137 голосов
/ 22 сентября 2008

В окне GDB вы можете использовать po для проверки объекта.

Дано:

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

установив точку останова после добавления объектов, вы можете проверить, что находится в словаре

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

Конечно, это NSString объекты, которые хорошо печатаются. YMMV с другими сложными объектами.

30 голосов
/ 22 сентября 2008

Вы можете щелкнуть правой кнопкой мыши любую переменную объекта (ObjC или Core Foundation) и выбрать «Печать описания в консоль» (также в Run-> Просмотр переменных). Это печатает результат метода -debugDescription объекта, который по умолчанию вызывает -description. К сожалению, NSDictionary переопределяет это, чтобы создать набор внутренних данных, которые вам обычно не нужны, поэтому в этом конкретном случае решение Крейгба лучше.

Отображаемые ключи и значения также используют -description, поэтому, если вы хотите получить полезную информацию о ваших объектах в коллекциях и в других местах, переопределение -description является обязательным. Я обычно реализую его в соответствии с этим, чтобы соответствовать формату NSObject реализации по умолчанию:

-(NSString *) description
{
    return [NSString stringWithFormat:@"<%@ %p>{foo: %@}", [self class], self, [self foo]];
}
6 голосов
/ 14 июня 2012

Вы можете использовать CFShow ()

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

В выводе вы увидите

{
  bar = foo;
  buz = fiz;
}
3 голосов
/ 20 апреля 2013

XCode 4.6 добавил следующие функциональные возможности, которые могут быть вам полезны

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

Теперь вы можете проверять эти типы объектов, не печатая весь объект в консоли. Наслаждайтесь!

Источник: http://developer.apple.com/library/mac/#documentation/DeveloperTools/Conceptual/WhatsNewXcode/Articles/xcode_4_6.html

1 голос
/ 26 ноября 2013

Нажмите на ваш dict, затем нажмите на маленький значок "i", он должен сделать работу :-) Xcode5, view the value of a dict

0 голосов
/ 20 марта 2019

Если вы хотите напечатать их в действии точки останова в современном XCode (да, я через 10 лет после оригинальной публикации!), Используйте следующее выражение точки останова в действии «Журнал сообщений»:

@ myDictionary.description @

Ниже приведен скриншот моего действия точки останова, где переменное событие - это NSString, а переменная contextData - это NSDictionary, в который я записываю содержимое:

0 голосов
/ 19 декабря 2012

Вы также можете использовать NSLog .

Также вы можете перейти в область отладки или xcode, затем узнать All Variables, Registers, Globals and Statics и выбрать свою переменную. Щелкните правой кнопкой мыши по нему. Затем выберите Print description of "...."

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...