본문 바로가기

iOS (스파르타)/Swift 문법

기초 문법 - 옵셔널

값이 없음을 포함하는 옵셔널의 개념 학습하기!!

 

1. 옵셔널과 nil

 

- 옵셔널(Optional)

  • 값이 없을 수 있는 상황에서 옵셔널(Optional)을 사용합니다.
  • 옵셔널은 물음표 ? 로 나타냅니다. (타입 어노테이션)
  • 옵셔널은 두 가지 가능성을 나타냅니다.
    • 값이 있고 옵셔널로 래핑(wrapping)해놓은 값을 언래핑(unwrapping)하여 해당 값에 액세스할 수 있다.
    • 값이 전혀 없다.
  • 옵셔널 타입끼리의 연산은 불가능

- nil

  • 변수에 nil 을 할당함으로써 값이 없는 상태의 옵셔널 프로퍼티를 만들 수 있습니다.

2. 옵셔널 바인딩

  • 옵셔널 바인딩은 옵셔널 값이 빈값인지 존재하는지 검사한 후, 존재하는 경우 그 값을 다른 변수에 대입시켜 바인딩하는 것을 의미합니다.
  • 이렇게 빈 값을 체크하고 옵셔널 값을 언래핑 해주는 것은 강제로 언래핑하는 것보다 훨씬 안전합니다.
  • if let / if var, guard let / guard var을 써서 옵셔널 값을 추출해 새로운 변수에 바인딩합니다.
  • if let vs guard let 차이점
    • if let은 if문의 코드 구현부 내에서만 상수 사용이 가능합니다.(지역 변수)
    • guard let 은 guard문을 통과한 상수를 guard문 밖에서 사용이 가능합니다.(전역변수)

3. 옵셔널 강제 언래핑

  • 강제 언래핑(Force unwrapping)은 !를 써서 강제로 옵셔널 추출합니다.(변수 앞에 !를 붙이는 것은 not의 의미 - 헷갈리지 말것!)
  • 강제 언래핑을 잘못 사용할 경우 프로그램이 비정상적으로 종료될 수도 있으므로 반드시 nil이 아닌 것이 확실한 상황에서 사용해야합니다.(최대한 안쓰는게 좋습니다)

4. 옵셔널 변수의 값이 nil일 때를 위해 기본값 설정하기

  • 값이 nil일 경우를 위해 기본값을 설정할 수 있습니다(nil-coalescing)
    • ?? 을 사용하여 기본값을 사용할 수 있는데, ?? 이 사용하여 기본값을 부여한 변수는 옵셔널 타입이 아닙니다
    • let(var) a = b ?? c 형태로 이루어지는데 b는 옵셔널 타입이고, b가 nil일 경우는 a에 c가 대입되고, nil이 아닐 경우에는 옵셔널을 제거한 값이 a에 대입됩니다

5. 옵셔널 체이닝

  • 옵셔널을 연쇄적으로 사용하는 것을 옵셔널 체이닝이라고 합니다.
  • . 을 통해 내부 프로퍼티나 메서드에 연속적으로 접근할 때 옵셔널 값이 있으면 옵셔널 체이닝으로 접근할 수 있습니다.

 

 

 

눈이 아파서.. 라이트모드로 바꾸고 글씨 좀 키웠다,,,