Swift 기초문법 - 5. Unwrap 옵셔널 변수

정성윤·2023년 7월 10일
0

Swift 이론

목록 보기
6/64
post-thumbnail
  • 옵셔널 : 있을 수 있는 것과 없는 것
  • 옵션으로 들어갈 수 있음
  • 자동차의 옵션 - 자율주행
  • 자율주행 -> 옵셔널

< 옵셔널이 필요한 이유 >

있을 수도 있고 없을 수도 있는 값
타입 뒤에 '?'를 붙여서 만듭니다. 있으면 값이 있고, 없으면 nil입니다.

  • "" : - 빈값
  • nil : - 없는 값
    -> 위의 두 값은 다름

Unwrap은 Swift에서 옵셔널 변수의 값을 안전하게 추출하는 방법을 말합니다.
Swift의 옵셔널은 값이 있을 수도 있고 없을 수도 있는 변수를 나타내는 타입입니다.
예기치 않은 값이나 널(null) 포인터 예외를 방지하기 위해 사용됩니다.

Unwrap을 사용하여 옵셔널 변수의 값을 추출할 때는 옵셔널 바인딩과 옵셔널 체이닝 두 가지 방법이 주로 사용됩니다.

1. 옵셔널 바인딩(Optional Binding) :

  • 바인딩 -> 묶는 것
  • 옵셔널 안의 값을 꺼내는 작업
  • 옵셔널 안에 값이 있는지 없는지 확인
  • 만약 옵셔널 안에 값이 있다면 사용

옵셔널 바인딩은 옵셔널 변수의 값을 추출하여 안정하게 사용하는 방법입니다. 옵셔널 바인딩은 'if let' 구문을 사용하여 옵셔널 변수의 값이 존재하는지 확인하고, 값이 있다면 추출하여 상수나 변수에 할당합니다.

if let unwrappedValue = optionalValue {
    // 옵셔널 값이 존재하는 경우 실행할 코드
    // unwrappedValue를 사용하여 값에 접근할 수 있음
} else {
    // 옵셔널 값이 nil인 경우 실행할 코드
}

nil을 할당하고 싶지만, 옵셔널 바인딩으로 매번 값을 추출하기 귀찮거나 로직상 nil때문에 런타임 오류가 발생하지 않을 것 같다는 확신이 들 때 nil을 할당해줄 수 있는 옵셔널이 아닌 변수나 상수가 있으면 효율적일 것입니다. 이것이 암시적 추출 옵셔널입니다. 옵셔널을 표시하고자 타입 뒤에 ?를 사용했지만, 암시적 추출 옵셔널을 사용하려면 타입 뒤에 !를 사용해주면 됩니다. **nil이 할당 되어 있을 때 접근을 시도하면 런타임 오류가 발생합니다.

2. 옵셔널 체이닝(Optional Chaning) :

  • 체인 : 여러개가 엮여있는 형태
  • 체인으로 엮어서 하나라도 nil이면 nil
  • petName'?.'age.level 혹은 '!'

옵셔널 체이닝은 옵셔널 변수의 속성이나 메서드에 접근할 때 사용하는 방법입니다. 옵셔널 체이닝은 옵셔널 변수 뒤에 물음표('?')를 사용하여 속성이나 메서드에 접근합니다.
옵셔널 변수의 값이 nil인 경우 옵셔널 체이닝은 전체 표현식을 평가하지 않고 nil을 반환합니다.

optionalValue?.property    // 속성에 접근
optionalValue?.method()    // 메서드 호출

Unwrap을 사용하여 옵셔널 변수의 값을 안전하게 추출하면, 옵셔널에 값이 있을 때만 해당 값을 사용할 수 있으므로 예기치 않은 nil포인터 예외를 방지할 수 있습니다. ** 코드의 안정성을 높일 수 있습니다.

** 옵셔널 강제추출 방식은 옵셔널의 값을 추출하는 가장 간단하지만 가장 위험한 방법입니다.
런타임 오류가 일어날 가능성이 가장 높기 때문입니다. 옵셔널을 강제 추출하려면 옵셔널 값의 뒤에 느낌표(!)를 붙여주면 값을 강제로 추출하여 반환해줍니다.

참고(출처) : 개발하는 정대리, 야곰(swift5)

profile
이유있는 스위프트 개발자

0개의 댓글