2016-07-13 50 views
3

我能夠使用調試器查看我的應用程序中除了一個類以外的任何地方的內存值。每次我嘗試,不管我嘗試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 
} 

但它有什麼處理我試圖檢查的SearchInstitution類實例的字符串屬性。

有沒有人看過類似的東西?我可能需要改變以解決它的任何想法?它使調試視圖控制器非常令人沮喪。

+0

我會提交一份關於該問題的錯誤報告 – Feldur

回答

4

這是一個已知的錯誤。在表達式解析器用來包裝表達式的代碼中與「if(1 == 1)」的衝突在github lldb中被修復(通過切換到「do」 - 當第一次寫代碼時這是不可用的。 ),並將其納入下一個官方工具發佈。

如果你想在此期間解決它,只需讓你的==運營商公開而不是私人。表達評估者試圖強制本地私人定義優先於潛在衝突的全球定義,並且沒有正確執行,因此只能看到本地私人定義。

請注意,更一般的錯誤還沒有被修復,所以如果你真的在可見的上下文中使用私有運算符,那麼只會使用該運算符定義。

+0

謝謝,工作! –

相關問題