Answers:
检查此内容如何在Xcode调试器中查看NSDictionary变量的内容?
我也用
po variableName
print variableName
在控制台中。
在你的情况下可以执行
print [myData objectAtIndex:indexPath.row]
要么
po [myData objectAtIndex:indexPath.row]
po obj
swift中的等效于是po print(obj)
。
我同意其他张贴者的观点,即Xcode作为开发环境应该包括一种调试变量的简便方法。好,好消息,有一个!
搜索并没有找到有关如何在Xcode中调试变量的简单答案/教程之后,我去研究Xcode本身,发现此发现(至少对我而言)非常有用。
在Xcode的主屏幕中,通过单击屏幕快照中显示的右上角按钮,确保查看底部的调试区域。
现在,通过单击“代码区域”的边框,设置一个断点-代码中您希望程序暂停的行。
现在,在“调试区域”中查找此按钮,然后单击中间的一个。您会发现您的区域现在分为两部分。
现在运行您的应用程序。
在程序执行过程中达到第一个断点时,您会在左侧看到该断点处所有可用的变量。
您可以展开变量上的向左箭头以获取更多详细信息。甚至可以使用搜索字段来隔离所需的变量,并在您“进入”断点范围时实时查看它的变化。
在调试区域的右侧,您可以使用鼠标的右键单击所需的变量来发送以打印所需的变量。
如您所见,上下文菜单中充满了非常有趣的调试选项。例如,已经建议在键入命令中使用Watch,甚至可以使用Edit Value…来更改变量的运行时值!
您也可以:
恕我直言有点隐藏和麻烦...
造成混淆的原因是声明的属性不是(实例名称)变量(实例变量)。
表达
indexPath.row
相当于
[indexPath row]
和任务
delegate.myData = [myData objectAtIndex:indexPath.row];
相当于
[delegate setMyData:[myData objectAtIndex:[indexPath row]]];
假设标准名称为综合属性。
此外,delegate
可能被声明为type id<SomeProtocol>
,即,编译器当时无法提供实际的类型信息delegate
,调试器依赖于编译时提供的信息。由于id
是通用类型,因此中没有有关实例变量的编译时信息delegate
。
这些就是为什么您看不到变量myData
或row
将变量视为变量的原因。
如果要检查发送-row
或的结果-myData
,可以使用命令p
或po
:
p (NSInteger)[indexPath row]
po [delegate myData]
或使用表达式窗口(例如,如果您知道您delegate
的类型是实际类型MyClass *
,则可以添加一个表达式(MyClass *)delegate
,或右键单击delegate
,选择View Value as…
并键入的实际类型,delegate
例如MyClass *
)。
话虽如此,我同意调试器可能会更有用:
可能有一个选项告诉调试器窗口使用运行时类型信息而不是编译时信息。它会减慢调试器的速度,但是会提供有用的信息。
声明的属性可以显示在称为属性的组中,并可以直接在调试器窗口中进行(可选)检查。这也将减慢调试器的速度,因为需要发送消息/执行方法以获得信息,但是也会提供有用的信息。
您可以在运行时将值打印到控制台窗口上。以下是步骤:
尝试运行->显示->表达式
输入数组的名称或您要查找的任何内容。