2016-06-13 21 views
9

私は簡単な質問があります。私は簡単な答えがあることを願っています。私は匿名の閉鎖引数$0を使用してオブジェクトのコレクションをフィルタリングするためにスウィフトのfilterメソッドを使用しています:XcodeのコンソールからSwift anonymous closure引数の値を出力(po)

let filteredArray = myArray.filter { 
    $0.name != "Bob" 
} 

私は、フィルタクロージャ内のブレークポイントを設定し、ちょうど$0の値を検査したいが、私はpo $0入力するとしていますコンソールでそれは私に与えます:

(lldb) po $0

error: :2:1: error: anonymous closure argument not contained in a closure

$0

^

どうすればこの問題を回避できますか?

明確にするために、コードはコンパイルされて実行されますが、実行時にコンソールでこのエラーが表示されます。

+0

これを行う方法も見つけたいと思いますが、現時点ではlldbの制限があるようです。https://bugs.swift.org/browse/SR-2029 – kball

答えて

14

これはXcodeの8.1 GM種子の既知の問題です。

Anonymous closure arguments in Swift cannot be used in LLDB expressions. For example, po $0 is not supported.

あなたは、その値を印刷するには、フレーム変数コマンドを使用することができます:release notesから

fr va $0 

この問題はrdar://28611943として提出されています。

0

フィルタ配列にpoであなたの内容をデバッグするために、このようなものを試してみてください:

let filteredArray = myArray.filter { 
    (anElement) in anElement.name != "Bob" 
} 

次に、あなたのブレークポイントで:

(lldb) po anElement 
+0

ありがとう。可能であれば、私のコードを書き直すことなくそれを行う方法を探しています。 – devios1