it-swarm.com.ru

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

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

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

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

84
Dara Kong

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

138
craigb

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

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

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

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

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

В выходной вы увидите

{
  bar = foo;
  buz = fiz;
}
6
uranpro

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

3
jkatzer

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

1
Taiko

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

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

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

0
user1873574

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

@ MyDictionary.description @

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

0
Pat