2016-07-13 4 views
3

디버거를 사용하여 하나의 클래스를 제외한 모든 곳의 값을 메모리에서 볼 수 있습니다.하나의 특정 클래스 파일에서 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이 정의를 사용하여 파일의 구조체입니다 : 내가 시도 할 때마다, 아무리 내가 po하려고 어떤 가치, 저도 같은 오류 메시지가 얻을

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 클래스 인스턴스의 string 속성과 관련이 있습니다.

이런 사람이 있습니까? 문제를 해결하기 위해 무엇을 바꿀 필요가 있을지에 대한 아이디어가 있습니까? 뷰 컨트롤러가 매우 실망스러운 디버깅을합니다.

+0

나는 그 중 하나에 대한 버그 보고서를 제출할 것입니다. – Feldur

답변

4

이것은 알려진 버그입니다. expression 파서가 표현식을 감싸기 위해 사용하는 코드에서 "if (1 == 1)"과의 충돌은 github lldb에서 고정되어 있습니다 ("do"로 전환 함 -이 코드를 처음 작성할 때 사용할 수 없음). .) 다음 공식 도구 릴리스로 사용해야합니다.

그동안 문제를 해결하려면 == 연산자를 private가 아닌 public으로 설정하십시오. 표현식 평가 기는 잠재적으로 상충되는 글로벌 개인 정의에 대해 우선 순위를 강제하기 위해 시도했지만 올바로 수행하지 않았기 때문에 사적인 로컬 사용자 만 볼 수있었습니다.

더 일반적인 버그는 아직 해결되지 않았으므로 실제 운영자가 보이는 컨텍스트에서 실제로 사용하는 경우 해당 운영자 정의 만 사용됩니다.

+0

감사합니다. –

관련 문제