✅ 옵셔널이란?
- 옵셔널(Optional)은 값이 있을 수도 있고 없을 수도 있는 데이터 타입
- 내부적으로는 .some(value)와 .none(nil)을 갖는 열거형(enum) 구조
enum Optional<Wrapped> {
case none // 값 없음 (nil)
case some(Wrapped) // 값 있음
}
✅ Optional을 사용하는 이유
- 값이 없을 수 있는 상황(사용자 입력, 네트워크 응답)을 타입으로 명확하게 표현할 수 있음
- 컴파일 타임에 언래핑을 강제함으로써 실수를 미리 방지
- if let, guard let, ??, 옵셔널 체이닝 등 다양한 문법을 통해 안전하고 간결한 코드 작성
- 값이 없다는 상태를 단순히 "", 0, false와 구분해 진짜 "존재하지 않음(nil)" 상태로 표현 가능
✅ Optional 언래핑 방법
1. if let 바인딩
- 옵셔널에 값이 있을 때만 블록 실행
if let name = optionalName {
print(name)
}
let name: String? = "Milou"
if let name {
print(name) // "Milou"
}
2. guard let 바인딩
- 함수 초기에 nil 여부 검사 후 빠르게 탈출할 때 유용
guard let name = optionalName else {
return
}
print(name)
3. 강제 언래핑 (!)
- 값이 nil이면 런타임 에러 발생
print(optionalName!)
4. 옵셔널 체이닝 (?.)
- 중간 값이 nil이면 전체 결과는 nil
print(optionalPerson?.name?.count)
5. nil 병합 연산자 (??)
- 값이 nil이면 오른쪽 기본값 사용
let name = optionalName ?? "Default"
6. switch-case 구문 사용
switch optionalName {
case .some(let value):
print(value)
case .none:
print("nil")
}
참고)
https://developer.apple.com/documentation/swift/optional
https://www.avanderlee.com/swift/optionals-in-swift-explained-5-things-you-should-know/
https://www.hackingwithswift.com/quick-start/understanding-swift/why-does-swift-have-optionals
https://medium.com/@worachote/mastering-optionals-in-swift-an-in-depth-guide-2024-128018461f45
'Swift' 카테고리의 다른 글
[WWDC] ARC in Swift (0) | 2025.05.30 |
---|---|
Struct 접근제어와 Memberwise Initializers (0) | 2025.05.29 |
[Swift]switch문 대신 if, guard 사용하기 (0) | 2025.05.28 |
Struct와 Class 차이(부제: 내가 SwiftUI가 어려웠던 이유) (1) | 2025.05.27 |
[Swift] COW 동작 원리 (0) | 2025.05.26 |