적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

Swift iOS 앱 개발/Swift

[Swift] Optional 옵셔널이란?

hongssup_ 2022. 12. 1. 01:45
반응형

Swift 언어의 안정성에서 중요한 요소 중 하나가 Optional 개념.

type casting이나 nil check 등에 있어서 중요한 역할을 한다. 

+ 종류 

 

Optional 옵셔널이란?

값이 있을 수도 있고, 없을 수도 있다 (nil 값을 가질 수 있도록)

(내부적으로는 열거형으로 처리가 되어 있음)

임시 타입이기 때문에 사용 시에 optional을 벗겨서 사용해야한다. (unwrapping)

 

언래핑 Unwrapping

: 옵셔널로 초기 설정을 해준 값은 값이 존재하더라도 계속 Optional( ) 로 wrapping 되어져 있다. 이 optional wrapping을 벗겨주어 할당된 값을 그대로 사용할 수 있도록 해주는 것. 

 

언래핑 하는 방법

Forced Unwrapping

: ! 를 사용해서 강제로 언래핑을 해주는 방법

강제로 언래핑을 해주면 값이 nil 일 경우 runtime error 를 발생시킨다

무조건 값이 있는 경우에는 괜찮지만, 값이 없을 때(nil일 때)는 에러가 날 수 있기 때문에 좋은 방법은 아님. 

Optional Binding

: 값이 있는지 없는지 확인해서 좀 더 안전한 형태로 값을 얻을 수 있음. (변수에 값 할당하는 기능도)

- if let 

: 옵셔널 추출 실패 + 성공 시에도 제어 가능. 할당된 상수는 if let 구문 안에서만 사용 가능하다. 

if let x = x {
    // 옵셔널 추출 성공
} else {
    // 옵셔널 추출 실패
}

- guard let 

: 옵셔널 추출 실패 한 else 문만 제어 가능. guard let 상수에 값을 할당하면 guard문 밖에서도 할당 상수를 자유롭게 사용 가능하다 

guard let x = x else { 
    // 옵셔널 추출 실패
    return 
}

Optional Chaining

연속적으로 옵셔널에 접근. 옵셔널을 완전히 벗겨내는 느낌이 아니라, 옵셔널에 접근할 때 다루는 방식. 

좀 더 간결한 코드로 옵셔널에 접근 가능. 

nil coalescing operater (nil 병합 연산자)

?? 으로 기본값을 넣어주는 방법.

옵셔널 값이 nil이 아니면 언래핑을 해주고, nil일 경우 ?? 뒤에 선언해준 기본값을 반환해줌. 

짧고 간단하게 사용 가능. 

 

값이 있으면 값을 반환하고, 없으면 다음 사용법에 따라 nil을 반환할수도, 에러를 일으킬 수도 있다. 

Optional Chaining 

 

 

 

 

 

 

 

 

728x90
반응형

'Swift iOS 앱 개발 > Swift' 카테고리의 다른 글

[Swift] Copy On Write 동작 방식  (0) 2022.12.07
[Swift] Class의 성능을 향상시킬 수 있는 방법  (0) 2022.12.02
[Swift] Codable - CodingKey  (0) 2022.11.24
oop vs pop  (0) 2022.11.17
[Swift] Generic  (0) 2022.11.16