2008-09-22 2 views
83

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

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

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

ответ

133

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

+7

Привет! Что такое gdb? Что такое po? Не уверен, что понял ... Спасибо за вашу помощь! :) – Martin 2009-07-09 14:08:28

+1

Итак, я узнал, что GDB означает отладчик GNU и фактически является окном отладчика Xcode.Теперь мне нужно найти, что такое po – Martin 2009-07-09 14:11:14

30

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

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

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

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

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

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

{ 
    bar = foo; 
    buz = fiz; 
} 
0

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

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

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

3

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

0

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

Смежные вопросы