본문 바로가기

개발

Swift 옵셔널 체이닝 (Optional Chaining)

728x90

Swift 옵셔널 체이닝 (Optional Chaining)

Swift 옵셔널 체이닝은 옵셔널 값에 안전하게 접근하고 연속된 멤버에 액세스하는 강력한 기능입니다. 옵셔널 체이닝을 사용하면 코드를 더욱 간결하고 안전하게 작성할 수 있으며, 런타임 오류를 방지하는 데 도움이 됩니다.

1. 기본 구조

Swift

optionalValue?.member

  • optionalValue: 옵셔널 값입니다.
  • .: 옵셔널 체이닝 연산자입니다.
  • member: 옵셔널 값이 포함하는 멤버입니다.

예시:

struct Person {

    var name: String?

    var city: String?

}



let jimin: Person? = nil



let cityName = jimin?.name?.city   // "nil"



print(cityName)   // Optional("서울")

 

2. 옵셔널 체이닝의 장점

  • 코드 간결성 향상: 옵셔널 값에 직접적으로 접근하는 대신 옵셔널 체이닝을 사용하면 코드를 더욱 간결하게 작성할 수 있습니다.
  • 런타임 오류 방지: 옵셔널 체이닝은 옵셔널 값이 nil인 경우 연속된 멤버에 대한 접근을 시도하지 않기 때문에 런타임 오류를 방지하는 데 도움이 됩니다.
  • 코드 가독성 향상: 옵셔널 체이닝은 코드의 의도를 명확하게 표현하여 코드 가독성을 향상시킵니다.

3. 옵셔널 체이닝 종류

  • 단일 옵셔널 체이닝 (?.): 단일 옵셔널 값에 대한 연속된 멤버 접근에 사용됩니다.
  • 연쇄 옵셔널 체이닝 (??, !?): 여러 개의 옵셔널 값에 대한 연속된 멤버 접근에 사용됩니다.
// 단일 옵셔널 체이닝

let name = person?.name



// 연쇄 옵셔널 체이닝 (값 반환)

let cityName = person?.city ?? "알 수 없음"



// 연쇄 옵셔널 체이닝 (실행 블록)

person?.city? {

    print("도시 이름은 \($0)입니다.")

}

 

4. 옵셔널 체이닝 활용

  • UI 요소에 옵셔널 값 설정: 옵셔널 체이닝을 사용하여 UILabel 또는 UIImageView와 같은 UI 요소에 옵셔널 값을 안전하게 설정할 수 있습니다.
  • 네트워크 응답 처리: 네트워크 API로부터 받은 옵셔널 값을 안전하게 처리하는 데 사용할 수 있습니다.
  • 데이터 모델에서 값 추출: 데이터 모델에서 옵셔널 값을 안전하게 추출하는 데 사용할 수 있습니다.