[Swift](Error) [setValue:forUndefineKey]: this class is not key value coding-compliant for the key test

Horang·2023년 9월 11일
0

❗️문제 상황

  1. 스토리보드에서 다음 화면으로 이동할 때 스토리 보드 파일들을 각각 분리하기 위해 스토리보드 레퍼런스를 사용했다.
  2. 스토리보드를 생성하면서 inspector창에서 Inherit Module From Target을 체크하지 않은 실수를 했다.


❗️원인

  • 스토리 보드를 생성할 때 inspector창에서 Inherit Module From Target을 체크하지 않은 경우 에러 발생
  • .swift파일에서 storyboard와 연결되어 있던 @IBoutlet파일이 삭제되어 storyboard에만 존재하는 경우 에러 발생

❗️해결 방법

  1. 스토리 보드 생성할 때 Inherit Module From Target을 우선적으로 체크
    스토리보드를 생성할 때 초기 세팅:
    • 뷰컨트롤러 연결해주기
    • (스토리보드 레퍼런스를 사용하는 경우) identifier 추가
    • Inherit Module From Target`을 체크
  2. @IBoutlet 을 사용할 때는 우선적으로 연결을 꼭 끊어주고 파일을 삭제하거나 변수 지우기

❗️힘들었던 점 & 나의 생각

  • 협업을 하면서 스토리보드를 사용하니 생각보다 고려해야 할 상황들이 많이 발생했다.우선 많은 화면들을 스토리보드로 작성하다 보니 각각의 스토리보드 파일의 수가 많아졌고, 스토리보드를 설정하는 과정과 뷰컨트롤러를 연결해주는 과정에서 많은 실수가 발생했다.
  • 스토리보드를 생성하고 identifier를 추가해주고, Inherit Module From Target을 체크해주고, 뷰컨트롤러 파일을 생성하고 스토리보드와 연결해주고, 심지어 각각의 스토리보드를 파일로 따로 분리하기 위해 Stroyboard Conference를 생성하고 연결해주고... 굉장히 많은 폴더와 파일들이 생성되었고 그러다보니 화면별로 파일을 구분하는 것에도 시간이 꽤 걸리기 시작했다.
  • 앞으로 협업을 하며 각자 구현해야 하는 화면의 수가 많을 때는 가급적 코드로 화면을 구성하는 것이 더 효과적일 것이다. 다른 사람과 함께 하면서 발생할 수 있는 문제들과 각자가 할 수 있는 실수들의 경우가 더 적을 것이라 판단이 된다.

💡 스토리 보드를 이용해 협업을 할 때는 진짜 서로의 화면을 각각 나누어 알아서 관리하고 남의 파일과 폴더는 최대한 건드리지 않는 것이 좋다. 그게 아니라면 마음 편하게 코드로 프로젝트를 시작하자..ㅎ

❗️참고 자료

[iOS - swift] storyboard 에러- 1. NSUnknownKeyException, this class is not key value coding-compliant for the key // 2. Unexpectedly found nil while implicitly unwrapping an Optional value

profile
몰입하여 고민하는 시간

0개의 댓글

Powered by GraphCDN, the GraphQL CDN