2017-10-14 170 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

如果您有任何其他建議,請隨時添加它們。

相關問題