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

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

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

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

Ответ 1

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

Ответ 2

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

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

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

Ответ 3

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

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

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

{
  bar = foo;
  buz = fiz;
}

Ответ 4

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

Ответ 5

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

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

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

Ответ 6

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