iOS 공부하는 감자

iOS) this class is not key value coding-compliant for the key ... 본문

iOS

iOS) this class is not key value coding-compliant for the key ...

DongTaTo 2022. 7. 5. 17:14
반응형

 

발생 원인

이 런타임 에러는 스토리보드의 뷰객체와 Swift파일의 @IBOutlet or @IBAction의 연결이 끊여졌을 때 발생한다.

대부분은 스토리보드의 뷰객체를 Swift파일과 연결한 후, Swift파일에 연결되어 있는 변수나 함수의 이름을 임의로 변경했을 때 연결이 끊어지면서 에러를 발생시킨다.

 

가끔.. 그냥 Xcode 문제로 연결이 끊어지고 에러를 발생시킬 때가 있다..!

 

 

해결 방법

1) 연결이 끊어진 (에러를 발생시키는) 부분을 찾는다.

스토리보드에서 에러가 발생했을 것으로 의심되는 ViewController를 선택한 후, 커넥션 인스펙터 영역을 확인한다.

해당 ViewController에서 발생한 에러라면 특정 연결 부분에서 노란 경고창을 확인할 수 있다.

 

 

2) 에러가 발생한 연결을 끊는다.

"X" 버튼을 눌러서 연결을 해제할 수 있다.

 

 

3) 연결을 원하는 뷰객체와 다시 연결시킨다.

연결을 해제시키면서 생긴 빈 동그라미(?)에서 좌클릭 + 드래그하여 뷰객체와 연결할 수 있다.

 

 

간단하게 해결 가능한 에러처럼 보이지만.. 프로젝트 규모가 커지면서 스토리보드의 ViewController가 점점 많아지면 에러를 찾기도, 해결하기도 많이 귀찮아질 것 같다..

 

 

 


 

 

에러 예방(?)

이미 스토리보드와 연결된 코드의 변수명, 함수명을 변경해야 하는 경우는 종종(?) 생긴다.

그냥 수정해버리면 에러가 발생니깐.. Refactor - Rename을 사용하여 이름을 변경하면 해당 변수, 함수와 연결된 모든 부분이 한 번에 수정된다.

 

 

1) 변경을 원하는 이름을 선택하고 우클릭 - Refactor - Rename을 선택한다.

 

 

2) 원하는 이름으로 변경하고 Enter를 누른다.

 

 

 


 

추가로.. 에러 메시지를 잘 보면 마지막에 어떤 UI요소에서 에러가 발생했는지 알려준다.

프로젝트 규모가 크다면 봐도.. 알기 어렵겠지만.. 규모가 작다면 UI요소 이름을 보고 빠르게(?) 오류가 발생한 부분을 찾을 수 있을 것 같다..!!

반응형

'iOS' 카테고리의 다른 글

iOS) IBOutlet연결 Strong VS Weak  (0) 2022.07.07
iOS) 다크모드 대응하기  (0) 2022.07.06
UIButton in iOS 15.0  (0) 2022.07.04
Entry Point  (0) 2022.07.04
qos (Quality of Service)  (0) 2022.05.21