2017-02-14 17 views
3

Swiftの辞書でprint()を使用すると、キーと値でコンソールにきれいできれいに出てきます。Sweet Dictionary in Xcode

object = Optional({ 
customerId = 111; 
transactionId = 333; 
extraId = 444; 
}) 

私は、同じ辞書でpoを実行すると、それは読み非常に困難である。このナンセンスダンプを出してくれる。

▿ Optional<Any> 
▿ some : 3 elements 
▿ 0 : 2 elements 
    ▿ .0 : transactionId 
    - .1 : 333 
▿ 1 : 2 elements 
    ▿ .0 : customerId 
    - .1 : 111 
▿ 2 : 2 elements 
    ▿ .0 : extraId 
    - .1 : 444 

使用するだけでpさらに悪くなる

(Any?) $R8 = some { 
    payload_data_0 = 0x0000000170e679c0 { 
    Swift._SwiftNativeNSDictionary = {} 
    _heapBufferBridged_DoNotUse = 0x0000000170e679d0 {} 
    nativeStorage = { 
    buffer = 0x00000001703e4300 { 
     Swift.ManagedBuffer = {} 
    } 
    initializedEntries = (values = 0x00000001703e4328, bitCount = 4) 
    keys = 0x00000001703e4330 
    values = 0x00000001703e4390 
    } 
    } 
    payload_data_1 = 0x0000000000000000 
    payload_data_2 = 0x0000000000000000 
    instance_type = 0x0000000105ffc3f8 
} 

私は私が実際にすべてのこのナンセンスを取捨選択することなく、それらを読むことができる方法で私の変数を参照するには、コンソールで行うことができますか?

PS - この場合、辞書であるOptional<Any>オブジェクトを印刷していますが、非オプションの辞書でも同じです。

+0

デバッガで 'pオブジェクト! 'と表示されますか? –

+1

LLDBデータフォーマッタを調べる必要があります。私はそれを動作させるチョップを持っていませんが、WWDC 2014からの[LLDBでのAdvanced Swift Debugging](https://developer.apple.com/videos/play/wwdc2014/410/)です。 34分のマーク。 –

答えて

8
expression debugPrint(object) 

上記の行をデバッガに置き、Enterキーを押してください。人間の読める形式でオブジェクトの内容を出力します。

また、別の1つのコマンド(po print(data))を使用すると、覚えやすくなります。

+0

これらのコマンドのエイリアスを作成できたので、デバッガにそれほど多くの情報を入力する必要はありませんか? – teradyl