2017-10-14 118 views
0

我为基于Swift的iOS应用程序构建了一个基本的树状数据结构,并且我希望能够将它打印到控制台进行调试。因此,我编写了一个遍历树(前序)的函数,并根据树中节点的深度,在其自身行上的每个节点上打印出值,并在其之前插入多个选项卡。很快在Xcode调试控制台中打印多行字符串

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",这在技术上是正确的,因为这是字符串是什么,但我想其实看到的换行和标签。

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

回答

0

我花了一段时间在StackOverflow周围挖掘,并调查了p(打印)和po(打印对象)之间的差异,并肯定了解了很多,但我仍然找不到我在找什么。

然后我想起了另一次我在那里调试地方,我需要手动更换某些字符“转义”字符(所以双引号"将与\"更换版本造成一定的密码编码功能代码,并单报价'将替换为\')。当我去测试我正在替换字符时,打印字符串会导致真正复杂和难以读取的输出字符串。我不记得我是怎么偶然发现的,但是我将String转换为NSString并将其打印出来。

瞧!它看起来正确,逃脱的角色完全按照他们应该显示的。所以,记得那个伎俩,我试了一下我的infoString var。

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

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

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

相关问题