2014-09-29 1 views
2

Swift에서 작성된 키보드 확장으로 표시된보기에 UIButton이 표시되지 않는 이유를 디버깅하려고합니다. 이Xcode 6은 Swift 클래스 객체의 값으로 "Some"이라는 텍스트만을 표시합니다.

dismissButton = (UIButton!) Some 

로 LLDB 디버거 (엑스 코드 6.0.1)에 표시되는 때 나는 변수의 앞에 작은 계층 화살표를 사용하여 연락처의 조사했는데, 내가 그것을 전환 할 때 아무것도 표시되지 않습니다.

나는 PO와 함께 인쇄하여 불완전 기껏 보인다

<UIButton: 0x7fa673e0c6f0; frame = (27 14; 183 30); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x7fa673e0b680>> 

를 얻으려고 (여기서 숨겨진?)

직접 스위프트 클래스 객체의 속성을 검사 할 수있는 방법이 있나요 LLDB에서? 뷰 계층 구조 디버거를 사용할 수 없습니다. 어떤 계층의 시뮬레이터 (4에서 6까지의 iOS 8)에 관계없이이 프로젝트에서는 "Capture View Hierarchy"를 사용할 수 없으므로 사용할 수 없습니다.

편집 : 내가 봤하지만 "일부는"디버거 맥락에서 무엇을 의미하는지에 어떤 문서화를 발견하지 않았습니다

(lldb) frame var -d run -- self.dismissButton 
(UIButton!) self.dismissButton = Some {} 

엔리코의 제안에 따라 경찰. 프로젝트에 구성 문제가 있는지 궁금합니다. 컨테이너 응용 프로그램은 Swift 뿐이지 만 템플릿 응용 프로그램이므로 Xcode 6.0.1에서 생성 된 기본값으로 완전히 이동했습니다.

이 Edit2가 : 그것은이었다 경우 엔리코, 그냥 '프레임 VAR'를 입력하면 그 안에 다음과 같이 자세한 출력을 생성하는 것은

dismissButton = Some { 
    Some = 0x00007fb90261f2e0 { 
     UIKit.UIControl = { 
     UIKit.UIView = { 
      UIKit.UIResponder = { 
      ObjectiveC.NSObject = {} 
      } 
     } 
     } 
    } 
    } 

그것은 일부는 실제로 무언가를 의미 찾기 위해 기쁘게, 더 흥미로운 (확실하지 않았다 nil의 특별한 경우 버전), 개체를 더 파고 들기위한 방법이 필요합니다. 당신의있는 UIButton이 스위프트 선택 사항이기 때문에

+0

"불완전한"po 출력은 LLDB 문제가 아닙니다 (po는 우리가 아닌 프레임 워크에 의해 구동 됨) –

+0

"일부"에 대해서는 열린 상태로 확장하면 포인터 값이 표시되지 않습니다. . (lldb) frame var -d run-dismissButton을 시도해 볼 수 있습니까? –

답변

3

의 유형이있는 UIButton 아니라, (이름의 끝에 빅뱅의 기호를 알), 그것은이 이가지 경우

enum IOU<T> { 
    case Some(T) 
    case None 
} 
에 열거입니다

Swift.ImplicitlyUnwrappedOptional입니다

일부보고 계시는 것입니다 : "이 선택 사항에는 UIButton이 포함되어 있습니다"에 해당하는 열거 형의 경우

불행히도 6.0.1은 이미 가지고있는 것보다 훨씬 더 멀리 할 것이라고 생각하지 않습니다. 알았어. 당신을 대신하여 포장을 푸는 것을 알고 있기 때문에 poing이 효과가 있습니다.