값이 없음을 포함하는 옵셔널의 개념 학습하기!!
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. 옵셔널 체이닝
- 옵셔널을 연쇄적으로 사용하는 것을 옵셔널 체이닝이라고 합니다.
- . 을 통해 내부 프로퍼티나 메서드에 연속적으로 접근할 때 옵셔널 값이 있으면 옵셔널 체이닝으로 접근할 수 있습니다.
눈이 아파서.. 라이트모드로 바꾸고 글씨 좀 키웠다,,,
'iOS (스파르타) > Swift 문법' 카테고리의 다른 글
기초 문법 - 배열, 세트, 딕셔너리 (0) | 2024.06.05 |
---|---|
기초 문법 - 스택, 큐 (0) | 2024.06.05 |
기초 문법 - 연산자, 조건문과 반복문 (0) | 2024.06.05 |
기초 문법 - 데이터 타입 (0) | 2024.06.04 |
기초 문법 - 프로퍼티와 출력, 함수 (0) | 2024.06.04 |