iOS) swift : 옵셔널(Optional )

J·2021년 1월 30일
0

Swift

목록 보기
4/4

앞으로는 야곰님의 유튜브로 진도를 나가겠습니다.






옵셔널 (Optional)

옵셔널(Optional)의 사전적인 의미는 선택적인 이라는 뜻입니다.
이것은 swift에서 값이 있을수도 있고, 없을수도 있다를 의미합니다. 이 문장만 보았을때는 아리송합니다.

옵셔널이 필요한 이유

nil값이 없는상태를 뜻합니다. nil값이 될수도 있고, 안될수도 있습니다. 옵셔널을 표기해주면 nil값이 들어갈 수 있습니다.

아 몇 번을 읽고 듣고 했는데도 조금 헷갈립니다.

우선 간단한 함수로 실행을 해보았습니다. func1은 param으로 Int형태의 값을 받고, func2는 param2로 Int?(옵셔널) 형태를 받습니다.
func1에 nil을 넣어주니 컴파일 에러가 발생했습니다.
func2에 nil을 넣어주니 컴파일이 됩니다.
일단 의미만 알고 넘어가도 좋을것 같습니다. 저는 이렇게 이해하겠습니다.

이 자리에는 nil 값이 들어와도 된다. 혹은 들어올 수 있다.

! 암시적 추출 옵셔널 ! (Type + !)

느낌표와 물음표가 있습니다. 사실 아직 잘 이해하지 못했는데, 직접 사용해봐야 알것 같으니 이런것이 있구나~ 하고 넘어가려고 합니다. 사용할 때 옵셔널 보호를 무시한 채 값을 꺼내옵니다. 만약 nil 값이 할당되어 있다면 오류가 나겠죠.

? 옵셔널 ? (Type + ?)

물음표가 붙어있는 것은 사용할 때 옵셔널 보호를 벗기고 값을 꺼내올 수 있습니다. 이 과정은 옵셔널 바인딩이라고 합니다. nil인지 아닌지 확인을 먼저 하기 때문에 느낌표보다는 더욱 안전하게 사용할 수 있습니다.

이 이상으로 이해하기 위해서는 직접 사용해봐야 알것 같습니다.
나중에라도 필요한 일이 생길테니 있는거겠죠? swift의 핵심개념이라고 합니다. 기억해두겠습니다.

옵셔널 값 추출

Optional Binding (옵셔널 바인딩)

nil check + 안전한 값을 추출하는 방법

nil인지 확인을 하고 if - let을 사용해 값을 추출합니다.

함수 하나를 정의했습니다. 매개변수의 타입은 String 이어야 하는데, 예제에서 사용하려는 변수 myName은 String? 즉, nil 값의 옵셔널 값입니다. if-let 구문에서 myName의 타입은 String? 이었으므로 else 다음에 나오는 실행문이 동작합니다.


느낌표와의 차이점이 뭔지 알아내고싶어서 느낌표를 붙여보았습니다.
똑같이 실행됩니다! 느낌표와 물음표의 차이점은 아직 모르겠습니다. ㅎㅎㅎ..!

여러개의 값을 한번에 추출할 수도 있습니다. if-let구문에 let 변수이름: 타입 = 변수명콤마(,)를 사용해 연달아 작성합니다. 이 때, 모든 값들이 true일 경우에만 실행된다는 점을 유의하면 좋습니다.

Force Unwrapping (강제 추출)

그다지 추천하지 않는 방법입니다. 말 그대로 강제로 추출하기 때문에 nil 값이 실행문에 들어가게 되면 런타임 오류가 발생합니다.




오늘은 여기까지 하겠습니다. 화이팅!

0개의 댓글