【问题标题】:Printing a multiline string in Xcode debugging console在 Xcode 调试控制台中打印多行字符串
【发布时间】:2018-03-26 04:55:27
【问题描述】:

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

root
    node1
        node1_1
        node1_2
    node2
        node2_1
            node2_1_1
        node2_2
    node3
        node3_1

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

那么如何打印我的字符串以便看到换行符和制表符?

【问题讨论】:

    标签: ios xcode console multiline


    【解决方案1】:

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

    然后我回忆起另一次调试一些密码编码代码时,我需要手动将某些字符替换为“转义”版本的字符(因此双引号 " 将替换为 \",并且单引号 ' 将替换为 \')。当我去测试我是否正确替换了字符时,打印出字符串会导致输出字符串非常复杂且难以阅读。我不记得我是如何偶然发现它的,但我将 String 转换为 NSString 并以这种方式打印出来。

    瞧!它看起来是正确的,转义字符完全按照应有的方式显示。所以,记住这个技巧后,我用我的infoString var 尝试了一下。

    果然,当我尝试po infoString as NSString时,它打印出来的功能和功能版本完全一样。

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

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

    【讨论】:

    • 这很有用!我想知道为什么会这样,还有没有其他方法可以在未转义的新行的情况下打印到控制台
    猜你喜欢
    • 2015-10-02
    • 1970-01-01
    • 2023-01-14
    • 2016-07-23
    • 2017-08-17
    • 2013-01-21
    • 1970-01-01
    • 2014-04-23
    • 2023-03-23
    相关资源
    最近更新 更多