[swift] swift 기본 문법 스터디 5주차

[swift] swift 기본 문법 스터디 5주차

옵셔널

옵셔널은 스위프트에서 도입된 새로운 개념입니다!
값이 없음을 의미하는 nil의 개념은 다른언어에도 존재하는데요, 값이 없을 수도있다는 nil이 될 수 있다는 타입을 옵셔널 이라고 합니다.
에러를 내는 것 보다는 무언가 문제가 있다, 혹은 해당 연산에 대한 결과 값은 없다라는 의미로 사용되어 에럴 없이 코드가 동작하게 도와주는 녀석입니다.

Optional(“값”) 으로 감싸줍니다. 만약 감싼 값이 없다면? 그렇죠 nil이 들어있겠죠!

이렇게 Optional에 Wrapping 되어있는 옵셔널 타입의 값은 Unwrapping 해서 사용해야 하죠.

그럼 정의부터 하나씩 살펴볼까요

옵셔널의 선언

type+? 입니다. 예를 들어 var age: Int? 이런식이죠. 옵셔널인지 아닌지는 nil을 대입해보면 됩니다.
여기서 추가적으로, Int 와 Int?는 다른 타입이므로 연산이 불가합니다.
Unwrapping해서 사용해야 하지요.

Optional Unwrapping

옵셔널안에 있는 값을 꺼내오는 방법은 어러가지가 있지만, 그 중에 가장 쉬운 방법은 ! 연산자를 사용한 강제 추출 방법이 있습니다.
age! 와 같은 방법으로 값을 꺼낼 수 있습니다. 문제는 age안에 nil이 들어있을 때 앱이 죽을 수 있으니 조심해서 사용해야 합니다.

Optional Binding을 사용하면, 안전하게 값을 꺼내올 수 있습니다. 내가 필요한 값은 꺼내오고 없으면, 실행하지 않습니다.

if let, guard let 과 같은 방법으로 언래핑 할 수 있습니다.

비교할 때에는 컴파일러 단에서 자동으로 값을 꺼내오기도 합니다.

옵셔널의 묵시적 해제

옵셔널 타입이긴 하지만, 값을 사용할 때는 자동으로 옵셔널 타입이 해제되는 방법입니다.
var name: String! = "Leeo" 이렇게 사용합니다.
형식상 옵셔널로 정의해야 하지만, 실제로는 사용할 때 절대 nil이 될 수 없는 경우 사용합니다.

옵셔널 체인

옵셔널 타입을 여러 중첩으로 쓰면, 그 값을 바인딩 하기위해 옵셔널 바인딩을 어러번 해야합니다.
너무나 불편하기 때문에 옵셔널 체이닝을 이용해서 nil 값을 검사합니다.
옵셔널 체이닝은 하나의 옵셔널 이기 때문에 반환값은 반드시 옵셔널 값 입니다. 중간에 하나라도 nil 값이 들어있어서
체인이 끊어지면, nil이 반환됩니다.
당연히 !를 이용하여 강제 해제 할 수 있습니다.

donaricano-btn

댓글

이 블로그의 인기 게시물

[IOS] AppDelegate는 뭐하는 녀석이지?

[git] git의 upstream과 origin 헷갈리는 사람 손!

[git] Github 이슈 라벨(issue labels)