스위프트 개발을 하다가 갑자기 다음과 같은 에러가 났다.
당연하게도 구글에 검색을 해봤는데,
찾아보니 제대로된 해결법을 시원하게 설명해주는게 아니라 잡소리가 너무많아서 내가 작성을 해두기로 했다.
오류 코드를 읽어보면, 옵셔널 벨류값에 언래핑을 해주었지만, nil값이 들어가기 때문에 문제가 발생한다고 되어있지만. 실제 문제는 코드의 위치의 문제에서 발생한다.
다음과 같은 문제점은 스토리보드에서 연결할때, 잘못해준 경우에 발생하는것이다.
그래서 연결을 삭제 해주고, 클래스 내부에 함수 밖 독자적으로 연결을 해준 다음, 코드를 입력하면 문제를 해결 할수 있다.
나의 경우에는 class viewDidLoad()안에 IBAction을 지정해주어서 발생한 문제였다.
따라서 해당 코드를 삭제하고( 당연하게도 코드 연결도 끊어줘야함! 이게 매우 중요)
다시 선언을 해주니 문제를 해결하였다.
코드연결 끊어주기
ios앱 개발할때 흔히 하는 실수 중 하나가 연결을 해두고, 코드를 작성하다가 삭제를 하고 다시 코드를 연결해주었을때, 코드연결이 이중으로 되어있어서(완벽하게 삭제가 되지않아) 크래쉬가 발생하는 경우가 많다.
따라서 코드를 삭제할때는 연결을 해제해주는것을 잊으면 안된다.
예시
이렇게 player이라는 코드와, button을 연결해두었을때, 해당코드만을 삭제한다고 연결이 끊어지는게 아니다.
반드시 우측 인스팩터에서 received Action부분에 혹은, segues, outlet에 연결되어있는 연결을 x 버튼을 통해 연결을 끊어주어야 한다.
연결을 끊어주면 위에와 같이 IBAction 혹은 IBOutlet앞에 있는 저 원형이 투명하게 바뀐다.
그러면 연결이 끊어진것.
이렇게 해야 코드를 지워도 오류가 발생하지 않는다.
Uploaded by N2T