首页 > 解决方案 > Xcode 10.1 调试器 - 如何在 Xcode 的调试器中查看整个对象集合?

问题描述

我试图在调试时轻松查看我的对象集合。问题是当我输入 po gameBoardSquaresCollection 时,我得到一个内存地址列表,如下所示:

在此处输入图像描述

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

标签: swiftxcode

解决方案


每次使用po类型时,您看到的是它的调试描述

在这种情况下:

当你这样做时,po gameBoardSquaresCollection你会看到gameBoardSquaresCollection数组的调试描述。在 Swift 中,数组调试描述会打印出数组包含的所有对象的描述。

由于您的数组包含SquareView似乎是 的子类的对象UIView,因此您会看到 s 的默认调试描述(它对 的参数UIView一无所知)。isTakenSquareView

幸运的是,Swift 允许您通过让它们符合CustomDebugStringConvertible协议来为您的类型返回自定义调试描述。

SquareView已经符合协议(因为它是 的子类UIView),因此如果您将以下覆盖添加到您的SquareView类型(如果您愿意,可以省略扩展名),您将能够添加该isTaken属性(或任何其他信息)问题)到调试输出po

extension SquareView {
    override var debugDescription: String {
        return super.debugDescription + "; isTaken = \(isTaken)"
    }
}

推荐阅读