我正在尝试在调试时轻松查看我的对象集合。问题是当我输入po gameBoardSquaresCollection时,我得到了一个内存地址列表,就像下面显示的那样:
我想查看对象的整个数组,而不是它们的内存地址。 gameBoardSquaresCollection的类型为Square,其中包含一个名为isTaken的属性。目前,我必须输入po gameBoardSquaresCollection [0] .isTaken才能看到游戏板的一个值。您可以想象每次我调试时都必须在gameBoardSquaresCollection中的所有108个正方形中键入该代码时,这变得多么乏味。有没有更简单的方法可以从Debugger Interface进行操作,或者可以通过命令从输出终端执行此操作?
答案 0 :(得分:1)
每次将po
与一种类型一起使用时,您看到的是其调试说明。
在这种情况下:
当您执行po gameBoardSquaresCollection
时,您会看到gameBoardSquaresCollection
数组的调试描述。在Swift中,数组调试描述会打印出数组包含的所有对象的描述。
由于数组中包含SquareView
个对象,这些对象似乎是UIView
的子类,所以您看到的是UIView
s的默认调试描述(对isTaken
一无所知SquareView
的参数。
幸运的是,Swift允许您通过使它们符合CustomDebugStringConvertible
protocol来为类型返回自定义调试描述。
SquareView
已经符合该协议(因为它是UIView
的子类),因此,如果您在SquareView
类型中添加了以下替代项(如果您将扩展名省略,例如),您可以将isTaken
属性(或与此有关的任何其他信息)添加到po
的调试输出中:
extension SquareView {
override var debugDescription: String {
return super.debugDescription + "; isTaken = \(isTaken)"
}
}