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

时间:2017-10-14 02:46:18

标签: ios xcode console multiline

我为基于Swift的iOS应用程序构建了一个基本的树数据结构,我希望能够将它打印到控制台以进行调试。所以我编写了一个遍历树(预购)的函数,并根据树中节点的深度在它前面的每个节点上打印出值,并在其前面插入一些标签。 。通过在代码中的某个地方调用函数,在调试控制台中它将打印如下:

root
    node1
        node1_1
        node1_2
    node2
        node2_1
            node2_1_1
        node2_2
    node3
        node3_1

等。这很好,它允许我在代码中的重要位置调用printInfo(),但我很快意识到我需要能够在现场打印字符串值,就像我在断点处暂停一样。所以我创建了一个计算属性infoString,它将从树构建一个String,其中包含所有换行符(\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",这在技术上是正确的,因为这就是字符串,但我想实际上换行符和标签。

那么如何打印我的字符串以便查看换行符和标签?

1 个答案:

答案 0 :(得分:7)

我花了一些时间在StackOverflow上挖掘并调查p(打印)和po(打印对象)之间的差异,当然学到了很多,但我仍然无法找到什么我在找。

然后我回想起我正在调试一些密码编码代码的地方,我需要用" escapeped"来手动替换某些字符。角色的版本(因此双引号"将替换为\",单引号'将替换为\')。当我去测试我正在正确地替换字符时,打印字符串将导致非常复杂且难以阅读的输出字符串。我不记得我偶然发现了它,但我将String转换为NSString并将其打印出来。

瞧!它看起来是正确的,逃脱的角色完全按照他们应该出现。所以,记得那个伎俩,我用我的infoString var。

试了一下

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

这就是诀窍。在调试控制台中将其打印出来时,将String转换为NSString

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