Как просмотреть содержимое переменной NSDictionary в отладчике Xcode?

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

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
85
0
60 537
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

Ответ принят как подходящий

В окне 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 с другими сложными объектами.

Здравствуй! Что такое ГДБ? Что такое ПО? Не уверен, что понял ... Спасибо за помощь! :)

Martin 09.07.2009 18:08

Итак, я обнаружил, что GDB означает отладчик GNU и фактически является окном отладчика Xcode. Теперь мне нужно найти то, что есть по

Martin 09.07.2009 18:11

OK! Таким образом, gdb на самом деле является приглашением в консоли, где вы можете вводить команды. Набрав «po имя_объекта», вы напечатали содержимое объекта в консоли.

Martin 09.07.2009 18:13

po - это псевдоним для объекта печати

Brad Cupit 16.11.2010 22:31

Чудесно! Эквивалентен «echo var_dump ()» и «print_r ()» в PHP.

mpemburn 11.05.2012 19:00

У меня есть файл формата JSON, я использовал NSJSONSerialization для этого файла и хранится в NSDictionary, как я могу просматривать объекты в словаре

Vineesh TP 06.08.2012 08:24

Спасибо, что прокомментировали, что означают gdb и po, @Martin.

Danny 06.12.2012 05:07

итак .... это все еще предпочтительный способ сделать это? Я думаю об IDE, таких как Eclipse, которые красиво выводят значения для всех общедоступных членов объекта прямо в панель переменных. эта функция требует ввода команды в Xcode?

ericsoco 03.02.2013 10:54

С Xcode 4 вы в значительной степени получаете то, что указано выше (т.е. панель консоли отладчика теперь работает на lldb, а не на gdb), а также можете получить всплывающую подсказку, показывающую значения объектов, если вы наводите курсор на рассматриваемую переменную. Xcode - это не мое обычное дело, поэтому я не помню, была ли всплывающая подсказка новой или когда она могла быть добавлена.

craigb 04.02.2013 02:14

Вы также можете поместить po obj в точку останова, а затем продолжить процесс автоматически после точки останова. Таким образом, вам не придется каждый раз останавливаться и набирать текст.

TechZen 27.12.2013 17:15

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

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

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

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

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

На выходе вы увидите

{
  bar = foo;
  buz = fiz;
}

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

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

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

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.

Для меня это ошибка - показывает только часть моего NSDictionary

Paul Slocum 27.02.2014 02:21

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

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

@ myDictionary.description @

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

Другие вопросы по теме