[ Swift ]Optional

이숭인·2021년 7월 22일
0

[ Swift ]

목록 보기
4/13

Optional

정의

  • Optional은 변수의 값이 값이 존재할수도, 존재하지 않을수도 있다는 것을 의미한다.

  • 값이 존재한다면 해당 값 그대로. 존재하지 않는다면 nil값이 저장되어 있다.


특징

  • Optional의 변수 선언은 ? 키워드를 사용한다.

  • Optional의 디폴트 값은 nil.


Optional과 non-Optional의 연산을 시도하게되면 에러가 발생하게 되는데, 이는 Optional값이 nil일 가능성이 있기 때문이다. 연산을 수행하기 위해서 unwrapping 또는 binding 과정이 필요하다.


Wrapping

Optional 타입은 기본적으로 wrap되어 있는 상태이다. 즉, optional 변수들은 현재 값이 존재하는것인지, 존재하지 않는건지(nil) wrap되어 있어 값이 존재하는지 없는지에 관계없이 바로 값이 출력되지 않는다.

Optional Unwrapping

Optional Unwrapping 이란 Optional 변수에서 Optional 껍데기를 벗겨내느 작업이다.

!를 이용하여 unwrapping을 할 수 있으며, 값이 nil일 경우 unwrapping을 할 수 없게되어 런타임 오류가 발생할 수 있으므로 반드시 예외처리를 해줘야 한다.


Optional Binding

Optional unWrapping이랑 비슷하지만 Optional 값을 새로운 상수로 받고, non-optional 값을 사용한다는 차이점이 있다.

if let nonOptionalNumber1 = number1 {
    let sum = nonOptionalNumber1 + number2
}

새로운 non-optional 변수를 만들어 optional변수를 할당할때 nil이 아닌경우 optional 변수가 가진 값을 저장한다.

그 이후, 새로운 non-optional변수를 이용해 연산을 수행하는 등의 작업을 한다.


Optional Chaining

여러 객체를 혼합해서 사용하다보면 Optional끼리의 연산이 필요한 경우가 있다.

이런 경우마다 Optional binding 을 사용하게 되면 코드가 상당히 복잡해지므로 Optional chaining을 이용해서 Optional일경우의 예외처리를 할 수 있다.

. 을 통해 클래스의 프로퍼티에 접근이 가능하다는 점을 이용한다

profile
iOS Developer

0개의 댓글