有没有办法通过Xcode调试器查看NSDictionary变量的键/值对?以下是在变量窗口中完全展开时的信息范围:
Variable Value Summary
jsonDict 0x45c540 4 key/value pairs
NSObject {...}
isa 0xa06e0720
我期待它向我展示字典的每个元素(类似于数组变量)。
答案 0 :(得分:136)
在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与其他复杂对象。
答案 1 :(得分:30)
您可以右键单击任何对象(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]]; }
答案 2 :(得分:6)
您可以使用CFShow()
NSMutableDictionary* dict = [[NSMutableDictionary alloc] init];
[dict setObject:@"foo" forKey:@"bar"];
[dict setObject:@"fiz" forKey:@"buz"];
CFShow(dict);
在输出中,您将看到
{
bar = foo;
buz = fiz;
}
答案 3 :(得分:3)
XCode 4.6添加了以下可能对您有帮助的功能
The elements of NSArray and NSDictionary objects can now be inspected in the Xcode debugger
现在您可以检查这些对象类型,而无需在控制台中打印整个对象。享受!
答案 4 :(得分:1)
点击你的词典,然后点击小“i”图标,它应该做的工作:-)
答案 5 :(得分:0)
您也可以使用NSLog。
您也可以进入调试区域或xcode,然后查找All Variables, Registers, Globals and Statics
然后选择您的变量。右键单击它。然后选择Print description of "...."
希望它有所帮助!
答案 6 :(得分:0)