IBDesignable, IBInspectable 오류로 인한 중독

입문


Xcode6에서 추가된 InterfaceBuilder(이하 IB) 기능인 IBDesignable와 IBInspectable를 사용해 보았습니다. 빠져드는 오류가 있어서 공유하고 싶습니다.
IBDesignable 및 IBInspectable 정보
  • @IBDesignable과 @IBInspectable로 점차적으로 변할 수 있는 사용자 정의 보기를 만들어 보았습니다.
  • 인터페이스builder에서 사용자 정의 보기 실시간 렌더링
  • 기사가 상세하게 쓰여지면 참고하세요.

    오류 내용

    Failed to set (myKey) user defined inspected property on (MyApp.MyClass): 
    [<MyApp.MyClass 0x7fc1315478c0> setValue:forUndefinedKey:]: 
    this class is not key value coding-compliant for the key myKey.
    
    this class is not key value coding-compliant for the key myKey.에 대한 오류는 관련 속성을 편집, 삭제할 때 거의 스토리보드에 오래된 관련을 보존하는 오류입니다.
    이런 상황에서 스토리보드에서 옛 연관된 속성 등을 삭제하면 해결된다.
    이번에는 Failed to set (myKey) user defined inspected property on(MyApp.MyClass): 오류, IBInspectable 속성 오류입니다.
    경고 부분에서 다음 메시지
    ~/Main.storyboard: warning: IB Designables: 
    Ignoring user defined runtime attribute for key path "myKey" on instance of "MyApp.Myclass". 
    Hit an exception when attempting to set its value: [<MyApp.Myclass 0x7fb51b0104c0> setValue:forUndefinedKey:]: 
    this class is not key value coding-compliant for the key myKey.
    
    

    해결 방법


    나는 이 오류의 해결 방법이 상황에 따라 다르다고 생각하지만, 원인은 자신의 상황에서 접근 제어가 있기 때문이다private.
        @IBInspectable private var myKey: Int {
            didSet {
    
            }
        }
    
    일반적으로 이것은 당연한 일이지만 IB Inspectable의 속성을 private 로 설정해도 IB는 정상적으로 값을 설정할 수 있다.그래서 간단한 문제를 알아차리지 못하고 실험을 반복했다.

    정상적인 상황에서 액세스 레벨을 수정하면 정상적으로 작동합니다.
    액세스 수준이 public 또는 internal 인 경우 문제 없음
    (액세스 수준을 명확하게 지정하지 않으면 자동으로 internal
        @IBInspectable var myKey: Int {
            didSet {
    
            }
        }
    

    좋은 웹페이지 즐겨찾기