在Xcode调试控制台中打印多行字符串

Tim*_*qua 4 console xcode multiline ios

我为基于Swift的iOS应用程序构建了一个基本的树数据结构,并且希望能够将其打印到控制台以进行调试。因此,我编写了一个函数,该函数将遍历树(预排序)并根据树中节点的深度在其自己的行上打印出每个节点的值,并在其之前插入许多选项卡。通过在代码中的某处调用该函数,在调试控制台中,它将显示如下:

root
    node1
        node1_1
        node1_2
    node2
        node2_1
            node2_1_1
        node2_2
    node3
        node3_1
Run Code Online (Sandbox Code Playgroud)

很好,它允许我只printInfo()在代码中的重要位置进行调用,但是我很快意识到我需要能够像在断点处暂停时那样在现场打印String值。因此,我创建了一个计算属性infoString,该属性将使用所有换行符从树中构建字符串(\n)和制表)\t以为我可以在断点处将其打印在调试控制台中。

我使用命令进行了尝试po infoString,但输出到控制台的内容是:"root\n\tnode1\n\t\tnode1_1\n\t\tnode1_2\n\tnode2\n\t\tnode2_1\n\t\t\tnode2_1_1\n\t\tnode2_2\n\tnode3\n\t\tnode3_1",这在技术上是正确的,因为这就是String的含义,但是我想实际看到换行符和选项卡。

那么,如何打印我的String以便看到换行符和选项卡?

Tim*_*qua 10

我花了一段时间研究StackOverflow,并研究了p(print)和po(打印对象),当然学到了很多东西,但是我仍然找不到我想要的东西。

然后我回想起另一遍,我在调试一些密码编码代码时,需要用字符的“转义”版本手动替换某些字符(因此,双引号"将替换为\",单引号'将替换为\')。 。当我测试我是否正确替换了字符时,打印出字符串会导致真正的混乱并难以读取输出字符串。我不记得自己是怎么偶然发现的,但我将其转换StringNSString并以这种方式打印出来。

瞧!看起来正确了,转义字符完全正确显示了。因此,记住了这个技巧之后,我就用infoStringvar 尝试了一下。

果然,当我尝试使用时po infoString as NSString,它的打印与功能版本完全相同。

这就是诀窍。转换StringNSString时你把它打印出来在调试控制台。

如果您还有其他建议,请随时添加。