Xcode 10.1调试器-如何在Xcode的调试器中查看对象的整个集合?

时间:2019-01-06 00:49:05

标签: swift xcode

我正在尝试在调试时轻松查看我的对象集合。问题是当我输入po gameBoardSquaresCollection时,我得到了一个内存地址列表,就像下面显示的那样:

enter image description here

我想查看对象的整个数组,而不是它们的内存地址。 gameBoardSquaresCollection的类型为Square,其中包含一个名为isTaken的属性。目前,我必须输入po gameBoardSquaresCollection [0] .isTaken才能看到游戏板的一个值。您可以想象每次我调试时都必须在gameBoardSquaresCollection中的所有108个正方形中键入该代码时,这变得多么乏味。有没有更简单的方法可以从Debugger Interface进行操作,或者可以通过命令从输出终端执行此操作?

1 个答案:

答案 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)"
    }
}
相关问题