如何在Xcode调试器中查看NSDictionary变量的内容?
时间:2020-03-06 14:31:13 来源:igfitidea点击:
是否可以通过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)变量,然后选择"将描述打印到控制台?"(也在"运行"->"变量视图"中)。这会用obejcts的-debugDescription方法打印结果,默认情况下会调用-description。不幸的是,NSDictionary
会覆盖它以产生我们通常不关心的一堆内部数据,因此在这种特定情况下,craigbs解决方案更好。
显示的键和值也使用-description
,因此,如果我们想要有关集合和其他地方对象的有用信息,则必须覆盖-description
。我通常按照以下方式实现它,以匹配默认NSObject
实现的格式:
-(NSString *) description { return [NSString stringWithFormat:@"<%@ %p>{foo: %@}", [self class], self, [self foo]]; }