옵셔널 값을 사용하기 위해서 꼭 해줘야하는 작업이다.
옵셔널을 언래핑하는 방법은 5가지가 있다(옵셔널 체이닝이라는 방법도 있지만 나중에 다뤄보려고 한다. 추후 여기에 추가할 예정)
1. 강제 언래핑 (force unwrapping)
사용하고자 하는 옵셔널타입의 인스턴스에 !를 붙이면 된다.
이 방식은 편하지만 옵셔널 값이 nil인지 체크하지 않기 때문에 불안전한 방식이라고 한다.
2. 암시적 추출 옵셔널 (implicitly unwrapped optional)
타입을 명시할 때 ?가 아닌 !를 붙이는 방식이다. 호출할 때 따로 언래핑 할 필요 없이 일반 변수나 상수처럼 사용가능하다.
예시처럼 별도의 작업 없이 변수로 사용가능하고 값도 바꿀 수 있다(nil도 부여가능하다).
3. if let
nil여부를 확인하는 조건문과 nil이 아닐 때 선언한 상수명에 값을 대입하는 선언문이 합쳐진 방식이다.
위의 예시는 만약 myOptional1이 nil이라면 아무 일도 일어나지 않는다.
else로 실행될 구문을 작성해주면 nil일 때 동작한다.
4. guard let
guard let은 함수를 통해 옵셔널을 언래핑하는 방식이라고 이해했다.
함수 안에서 guard let으로 해당 인자가 nil일 때 동작할 코드를 작성하면 그 이후로 언래핑 된 상태로 사용가능하다. 언래핑 이후 코드가 길어질 때 if let을 대신해서 사용한다고 한다.
5. nil 병합 연산자
사용하려는 옵셔널 변수 뒤에 ??를 붙여서 해당 옵셔널이 nil일 때 대체할 값을 미리 기입해놓는 방식이다.
예시처럼 값이 있을 땐 그대로 동작하고 nil일 때는 대체값이 들어간다.
'ios > swift' 카테고리의 다른 글
[Swift]함수의 파라미터는 몇 개까지 쓸 수 있을까? (0) | 2023.10.12 |
---|---|
[Swift] 암시적으로 언래핑한 옵셔널과 일반 옵셔널의 차이 (0) | 2023.10.11 |
[Swift] String을 Int로 변환할 때 왜 Optional<Int>타입이 될까? (4) | 2023.10.02 |
[Swift] function과 method (0) | 2023.10.01 |
[Swift] split과 components (0) | 2023.10.01 |