String 타입을 Int로 변환시킬때 옵셔널 질문입니다!

Choose Top 과제 중 segment 타이틀 값을 가지고 와서 Int로 변환시키고 싶었습니다.
map을 이용하여 위 그림처럼 어째어째 구현은 했는데 Int($0!)! << 여기에서 $0뒤에 왜 ! 가 붙어야 하는지
잘 모르겠습니다…! Int($0)! 로 타이핑 하면 안되는 건가요??

좋아요 2

먼저, ! 즉 Force Unwrapping Operator 의 별명이 뭔지 소개해 드려야겠네요.

!의 별명은 Crash Operator 랍니다. 크래시를 일으키는 오퍼레이터라는 의미죠.

위쪽에 코드를 추가해서 언래핑이나 타입캐스팅을 통해 !를 없앨 수 있다면 번거로워도 그렇게 하는 게 좋아요.

$0 에 !를 붙여야 하는 이유는, segmentedControl.titleForSegment(at:) 이 리턴하는 값이 String? 이기 때문입니다.
https://developer.apple.com/documentation/uikit/uisegmentedcontrol/1618561-titleforsegment

좋아요 2

답변 감사합니다!
! 를 뺴고 이런 형식으로 바꾸어보았는데 작동은 잘되는것 같습니다 …ㅎㅎ;
그리고 항상 nil일 경우에 값을 무엇을 주어야할지가 헷갈리는데 이경우에 0으로 줘도 상관없을까요?

좋아요 1

빈 값을 0으로 채우는 건 상황에 따라 다를 것 같습니다.
배열의 경우 nil이 들어가면 배열이 닫혀버리기 때문에 임의의 값을 넣는 경우가 있는데요,
0을 넣어도 될지는 코드 내의 로직을 보고 판단해야 할 듯 합니다.

좋아요 1