2016-07-13 19 views
3

私は、デバッガを使用して、アプリケーション内のどこでも1つのクラスを除くすべての値をメモリ内に表示できます。私がしようとするたびに、関係なく、私はpoにしてみてくださいどのような値、私は同じエラーメッセージを取得していない:特定のクラスファイルでSwiftデバッガを使用できません

(lldb) po searchInstitution.name 
error: <EXPR>:2:1: error: cannot convert value of type 'Int' to expected argument type 'Device' 
searchInstitution.name 
^~~~~~~~~~~~~~~~~ 
<EXPR>:15:7: error: cannot convert value of type 'Int' to expected argument type 'Device' 
    if (1==1) {           
    ^

Deviceは、この定義を使用してファイル内の構造体である:

private struct Device: Hashable { 
    let type: String 
    let mask: String 

    var hashValue: Int { 
     return type.hashValue^mask.hashValue 
    } 
} 

private func ==(lhs: Device, rhs: Device) -> Bool { 
    return lhs.type == rhs.type && lhs.mask == rhs.mask 
} 

しかし、それは何の関係もありません私が調べようとしているSearchInstクラスのインスタンスの文字列プロパティと関係があります。

このような人は誰ですか?私はそれを修正するために変更する必要があるかもしれないものについての任意のアイデア?これは、ビューコントローラが非常にイライラするデバッグを行います。

+0

私はその1つについてバグレポートを提出します – Feldur

答えて

4

これは既知のバグです。式パーサーが式をラップするために使用するコードの "if(1 == 1)"との競合は、github lldbで固定されています( "do"に切り替えることによって修正されます。 )、それを次の公式なツールリリースにする必要があります。

その間に回避したい場合は、==演算子をプライベートではなくパブリックにするだけです。表現評価者は、ローカルプライベート定義の優先順位を強制的に競合するグローバルプライベート定義よりも強くしようとしていましたが、それを正しく実行していないため、プライベートローカルのものだけが見えました。

より一般的なバグはまだ修正されていないので、表示されているコンテキストで実際にプライベート演算子を使用する場合は、その演算子定義のみが使用されます。

+0

ありがとうございました! –

関連する問題