Swift

[Swift]Optional을 사용하는 이유

양밀루 2025. 5. 19. 23:34

✅ 옵셔널이란?

  • 옵셔널(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