代码之家  ›  专栏  ›  技术社区  ›  Tim Fuqua

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

  •  8
  • Tim Fuqua  · 技术社区  · 7 年前

    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" 这在技术上是正确的,因为这就是字符串的含义,但实际上我想 看见 换行符和制表符。

    1 回复  |  直到 7 年前
        1
  •  20
  •   Tim Fuqua    7 年前

    我花了一段时间在StackOverflow周围挖掘,并调查了 p (打印)和 po (打印对象),当然学到了很多,但我仍然找不到我要找的东西。

    然后我回忆起另一次,我在调试一些密码编码代码,在那里我需要手动将某些字符替换为字符的“转义”版本(所以是双引号) " 将替换为 \" ,和一个单引号 ' 将替换为 \' ). 当我去测试是否正确替换字符时,打印出的字符串将导致输出字符串非常复杂且难以读取。我不记得我是怎么偶然发现它的,但我把 String NSString 然后用那种方式打印出来。

    瞧!它看起来是正确的,转义字符完全按照它们应该显示的那样显示。所以,记住了这个把戏,我用我的 infoString var。

    当然,当我试着 po infoString as NSString

    这就是诀窍。转换 一串 NSString字符串

    如果你还有其他建议,请随意添加。