Как просмотреть содержимое переменной NSDictionary в отладчике Xcode?
-
02-07-2019 - |
Вопрос
Есть ли способ просмотреть пары ключ/значение переменной 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
Теперь вы можете проверять эти типы объектов без необходимости печатать весь объект в консоли.Наслаждаться!
Нажмите на свой словарь, затем нажмите на маленький значок «i», он должен выполнить свою работу :-)
Вы также можете использовать НСлог.
Также вы можете зайти в область отладки или в xcode, а затем узнать All Variables, Registers, Globals and Statics
затем выберите свою переменную.Щелкните правой кнопкой мыши по нему.Затем выберите Print description of "...."
Надеюсь, поможет!
Если вы хотите напечатать их в действии точки останова в современном XCode (да, прошло 10 лет после исходного сообщения!), используйте следующее выражение точки останова в действии «Сообщение журнала»:
@myDictionary.description@
Ниже приведен снимок экрана моего действия с точкой останова, где переменная event — это NSString, а переменная contextData — это NSDictionary, содержимое которого я записываю::