有没有办法通过 Xcode 调试器查看 NSDictionary 变量的键/值对?这是在变量窗口中完全展开时的信息范围:
Variable Value Summary
jsonDict 0x45c540 4 key/value pairs
NSObject {...}
isa 0xa06e0720
我期待它向我展示字典的每个元素(类似于数组变量)。
有没有办法通过 Xcode 调试器查看 NSDictionary 变量的键/值对?这是在变量窗口中完全展开时的信息范围:
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)变量并选择“Print Description to Console”(也在运行->变量视图中)。这将打印对象-debugDescription
方法的结果,默认情况下调用-description
. 不幸的是,NSDictionary
覆盖它以产生一堆您通常不关心的内部数据,因此在这种特定情况下,craigb 的解决方案更好。
显示的键和值也使用-description
,因此,如果您想要有关集合和其他地方的对象的有用信息,-description
则必须覆盖。我通常按照以下方式实现它,以匹配默认NSObject
实现的格式:
-(NSString *) 描述 { 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”图标,它应该可以完成工作:-)
您也可以使用NSLog。
您也可以进入调试区域或 xcode,然后找出All Variables, Registers, Globals and Statics
然后选择您的变量。右键单击它。然后选择Print description of "...."
希望能帮助到你!