나는 연결하기 위해 노력하고있어 UILabel
와 IBOutlet
내 수업에서 만들었습니다.
내 응용 프로그램이 다음 오류와 함께 충돌합니다.
이것은 무엇을 의미 하는가?
어떻게 고칠 수 있습니까?
*** catch되지 않은 예외 ‘NSUnknownKeyException’으로 인해 앱을 종료하는 이유 : ‘[<UIViewController 0x6e36ae0> setValue : forUndefinedKey :] :이 클래스는 키 XXX에 대해 키 값 코딩 호환이 아닙니다.’
답변
xib에서 뷰 컨트롤러의 클래스가 잘못되었을 수 있습니다.
프로젝트를 다운로드했습니다.
당신이 얻는 오류는
‘NSUnknownKeyException’, 이유 : ‘[<UIViewController 0x3927310> setValue : forUndefinedKey :] :이 클래스는 키 문자열에 대한 키 값 코딩 호환이 아닙니다.’
Second
뷰 컨트롤러 MainWindow.xib
가 UIViewController
대신SecondView
클래스를 가지고 있기 때문에 발생합니다 . 올바른 클래스로 변경하면 문제가 해결됩니다.
그건 그렇고, Objective-C에서 “string”과 같은 이름을 갖는 것은 좋지 않습니다. 런타임 이름 충돌을 초대합니다. 실습용 앱에서도 한 번 피하십시오. 이름 충돌은 추적하기가 매우 어려우므로 시간을 낭비하고 싶지 않습니다.
이 오류의 또 다른 이유는 한 컨트롤러에서 다른 컨트롤러로 요소를 복사하여 붙여 넣을 때 Xcode는이 요소를 새 컨트롤러로 편집하고 다시 연결 한 후에도 원래 컨트롤러에 대한 링크를 유지합니다.
이 오류의 또 다른 이유는 다음과 같습니다.
나쁜 콘센트.
당신도 한 제거 하거나 이름을 바꿀 당신의 출구 이름 .h
파일을.
파일 .xib
또는 .storyboard
연결 관리자 에서 제거하십시오 .
하나 더 가능한 이유
(내 경우에는) 바인딩 가능한 속성을 가진 UIView 확장 및 바인딩 가능한 속성 (예 : 그림자, 모서리 반경 등)에 대한 설정 값을 UIView 확장에서 제거하십시오 (어떤 이유로 든).하지만 다음 <userDefinedRuntimeAttributes>
은 xml에 남아 있습니다 ( foo.storyboard
).
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="color" keyPath="shadowColor">
<color key="value" white="0.0" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="shadowOpacity">
<real key="value" value="50"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="point" keyPath="shadowOffset">
<point key="value" x="5" y="5"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="shadowRadius">
<real key="value" value="16"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="number" keyPath="borderWidthValue">
<real key="value" value="0.0"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
솔루션 : 마우스 오른쪽 버튼으로 클릭 foo.storyboard
> 소스 코드로 열기> keyPath로 검색 (예 : shadowRadius)> </userDefinedRuntimeAttributes>
문제를 일으킨 원인 삭제
답변
xib에 연결이 잘못되었을 수 있습니다.
이 오류가 여러 번 발생했습니다. 이 경우 TechZen의 답변이 절대적으로 맞지만 다른 일반적인 원인은 .h / .m에서 IBOutlet 속성의 이름을 이미 펜촉의 File ‘s Owner에 연결 한 경우입니다.
펜촉에서 :
- IB에서 객체를 선택하고 ‘Connections Inspector’로 이동하십시오.
-
‘Referencing Outlets’에서 객체가 여전히 이전 속성 이름에 연결되어 있지 않은지 확인하십시오. 만약 존재한다면 작은 ‘x’를 클릭하여 참조를 삭제하고 다시 빌드하십시오.
스토리 보드를 사용하는 경우 또 다른 일반적인 원인은 UIButton에 둘 이상의 할당이있을 수 있습니다 (솔루션은 펜촉과 거의 동일 함).
답변
이 오류를 없애기 위해 시뮬레이터 / iPhone에서 앱을 삭제해야했습니다.
답변
테이블에 대한 사용자 정의 ViewCell을 구현하려고 할 때이 오류가 발생했습니다. XIB에 대한 View 컨트롤러를 강조 표시하고 CellView의 요소에 연결하면 “이 클래스는 키에 대해 키 값 코딩 호환이 아닙니다”라는 오류가 발생하면 오류를 제거했습니다.
아래 이미지에서 연결을 삭제하십시오.
테이블 뷰 셀에만 연결되어 있는지 확인하십시오. 테이블보기 셀과 INSPECTOR에서 클릭을 확인하려면 연결을 찾으십시오.
답변
때때로 이것은 “Inherit From Target”과 관련이 있습니다. 그 값을 설정해야합니다. 단일 대상 앱을 사용하면 대상에서 상속을 선택할 수 있습니다. 하나 이상의 대상이있는 경우 원하는 대상을 선택하십시오.
답변
범용 앱이 아닌 iPhone 전용 앱인 경우 다음 필드가 비어 있는지 확인하십시오.
대상> 요약> iPhone / iPod 배포 정보> 기본 인터페이스
xib를 지정하면 충돌이 발생합니다.
답변
이 오류는 이미 연결된 Interface Builder 객체가 소유자의 소스 (파일 소유자)에서 제거 / 이름 변경 되었음을 나타냅니다 .
느낌표가 표시 되면 Interface Builder에서 파일 소유자 를 Control- 클릭하십시오 .
아래 그림에서 “aRemovedView”의 오른쪽에 느낌표가 있음을 알 수 있습니다. 이는 IB에 이미 연결된 상태에서 IBOutlet보기 객체를 제거했기 때문입니다.
잡히지 않는 예외 ‘NSUnknownKeyException’으로 인해 응용 프로그램을 종료하는 이유 는 다음과 같습니다
. ‘[setValue : forUndefinedKey :] :이 클래스는 키 aRemovedView 에 대해 키 호환 코딩 키가 아닙니다.’