有没有办法通过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)变量,然后选择"将描述打印到控制台"(也可以在Run-> Variables View中).这将打印出obejct -debugDescription
方法的结果,默认情况下调用该方法-description
.不幸的是,NSDictionary
覆盖它会产生一堆你通常不关心的内部数据,所以在这种特殊情况下,craigb的解决方案更好.
显示的键和值也可以使用-description
,因此如果您需要有关集合和其他地方的对象的有用信息,-description
则必须覆盖.我通常会沿着这些行实现它,以匹配默认NSObject
实现的格式:
-(NSString *) description { 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; }