2017-10-14 8 views
0

私はSwiftベースのiOSアプリケーション用の基本的なツリーデータ構造を構築しました。デバッグのためにコンソールに出力したいと思っていました。だから、私はツリーをたどる(preorder)関数を書いて、ツリーのノードの深さに基づいてそれ以前に挿入されたいくつかのタブで、それ自身の行の各ノードの値を表示します。どこかにコード内の関数を呼び出すことによって、それは次のように印刷し、デバッグコンソールで:Xcodeデバッグコンソールで複数行文字列を印刷

root 
    node1 
     node1_1 
     node1_2 
    node2 
     node2_1 
      node2_1_1 
     node2_2 
    node3 
     node3_1 

など、私はすぐにこれは良かったし、それは私だけでコード内の重要な場所でprintInfo()を呼び出すことが許されますが、私がブレークポイントで一時停止したときのように、その場で文字列値を出力できるようにする必要があることに気付きました。だから私はすべての改行(\n)とタブ(\t)を使ってツリーからストリングを作成する計算されたプロパティーinfoStringを作成し、ブレークポイントにあったときにデバッグ・コンソールでそれを印刷できると考えました。

私はコマンド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(印刷物)の違いを調べましたが、確かに多くのことを学んでいましたが、探していたものはまだ見つかりませんでした。

は、それから私は私が手動で「エスケープ」の文字のバージョン(その二重引用符"\"に置き換えられるだろう、とシングルで特定の文字を置き換えるために必要ないくつかのパスワードのエンコードコードをデバッグして、別の時間をリコール見積もり'\'に置き換えられます)。私が文字を正しく置き換えているかどうかテストするために行ったとき、文字列を出力すると、本当に複雑で出力文字列を読みにくくなります。私はそれに遭遇したことを覚えていませんが、StringNSStringに変換して印刷しました。

Voila!エスケープされた文字が正しく表示されているように見えました。そのトリックを思い出して、私はinfoString varで試してみました。

確かに、po infoString as NSStringを試したとき、それは機能バージョンのように正確に印刷されました。

だからこそトリックです。デバッグコンソールで印刷するときはStringNSStringに変換してください。

その他の推奨事項がある場合は、自由に追加してください。