Swift

Optional Chaining

GREEN.1229 2021. 4. 12. 19:33

안녕하세요. 그린입니다🟢

이번 포스팅에서는 Optional Chaining 옵셔널 체이닝에 대해 학습해보겠습니다.

옵셔널 체이닝 (Optional Chaining)

 : 옵셔널 체이닝이란 옵셔널을 여러번 체인 처럼 사용하는 기술

 -> 옵셔널 체이닝을 된 부분에서 값이 하나라도 nil이면 nil을 반환

옵셔널 체이닝의 사용

import Foundation

class Camper {
    var nickName: String
    var description: Description?
    
    init(nickName: String) {
        self.nickName = nickName
    }
}

struct Description {
    var gender: Gender?
    var age: Int
}

class Gender {
    var gender: String
    
    init(gender: String) {
        self.gender = gender
    }
}

let green: Camper = Camper(nickName: "green")
let greenGender: String? = green.description?.gender?.gender

 : 이렇게 옵셔널 체이닝을 사용하여 줄 수 있다.

 : 만약 강제추출로 옵셔널 체이닝을 해준다면 값이 nil이기에 런타임 오류가 발생한다.

if let greenGender: String = green.description?.gender?.gender {
    print(greenGender)
    } else {
        print("Not Found")
}

green.description?.gender?.gender = "Male"

 : 옵셔널 체이닝과 옵셔널 바인딩의 혼합되어 사용하여 값을 찾을 수 있음

green.description = Description(gender: nil, age: 77)
green.description?.gender = Gender(gender: "Male")

 : 값을 찾으려면 체이닝 연결된 단계별로 값을 주어주면됨

 

[참고자료]

스위프트 프로그래밍 3판 (야곰 지음)