如何在 Xcode 调试器中查看 NSDictionary 变量的内容?
Posted
技术标签:
【中文标题】如何在 Xcode 调试器中查看 NSDictionary 变量的内容?【英文标题】:How to view contents of NSDictionary variable in Xcode debugger? 【发布时间】:2010-09-11 21:14:27 【问题描述】:有没有办法通过 Xcode 调试器查看 NSDictionary 变量的键/值对?这是在变量窗口中完全展开时的信息范围:
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 与其他复杂对象。
【讨论】:
嗨!什么是gdb?什么是宝?不确定明白...感谢您的帮助! :) 好吧,我发现 GDB 代表 GNU 调试器,实际上是 Xcode 的调试器窗口。现在我需要找到 po 是什么 好的!所以gdb其实就是Console中的一个prompt,你可以在里面输入命令。通过键入“po object_name”,您可以在控制台中打印出对象内容。 po 是 print-object 的别名 太棒了!等效于 php 中的“echo var_dump()”或“print_r()”。【参考方案2】:您可以右键单击任何对象(ObjC 或 Core Foundation)变量并选择“将描述打印到控制台”(也在运行->变量视图中)。这将打印对象的-debugDescription
方法的结果,默认情况下调用-description
。不幸的是,NSDictionary
覆盖了它以生成一堆您通常不关心的内部数据,因此在这种特定情况下,craigb 的解决方案更好。
显示的键和值也使用-description
,因此如果您想要关于集合和其他地方的对象的有用信息,覆盖-description
是必须的。我通常按照这些思路实现它,以匹配默认 NSObject
实现的格式:
-(NSString *) 描述 return [NSString stringWithFormat:@"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
【讨论】:
这对我来说是错误的——只显示我的 NSDictionary 的一部分【参考方案5】:点击你的听写,然后点击小“i”图标,它应该可以完成这项工作:-)
【讨论】:
【参考方案6】:如果您想在现代 XCode 的断点操作中打印这些内容(是的,我比原始帖子晚了 10 年!)在“日志消息”操作中使用以下断点表达式:
@myDictionary.description@
下面是我的断点操作的屏幕截图,其中变量 event 是 NSString,变量 contextData 是我正在记录内容的 NSDictionary: :
【讨论】:
【参考方案7】:您也可以使用NSLog。
您也可以进入 Debug 区域或 xcode,然后找到 All Variables, Registers, Globals and Statics
然后选择您的变量。右键单击它。然后选择Print description of "...."
希望对你有帮助!
【讨论】:
以上是关于如何在 Xcode 调试器中查看 NSDictionary 变量的内容?的主要内容,如果未能解决你的问题,请参考以下文章