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

StackOverflow https://stackoverflow.com/questions/112796

Вопрос

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

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

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

Это было полезно?

Решение

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

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

Вы можете щелкнуть правой кнопкой мыши любую переменную объекта (ObjC или Core Foundation) и выбрать «Распечатать описание на консоли» (также в меню «Выполнить» -> «Просмотр переменных»).Это печатает результат объекта -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;
}

В 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

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

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

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

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

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

@myDictionary.description@

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top