옵셔널을 사용하다보면 코드가 길어지는 문제가 발생한다.

struct Human{
    var name:String?
    var man : Bool = true
}
struct Company{
    var CEO:Human?
    var companyName:String?
}

var startup : Company? = Company(CEO: Human(name: "양대표", man: false), companyName: "준수주식회사")
//ceo 프로퍼티의 네임에 접근해보자

if let company = startup{
    if let ceo = company.CEO{
        if let name = ceo.name{
            print("대표이사는 \\(name)입니다.")
        }
    }
}
//옵셔널 체인사용시
if let name = startup?.CEO?.name{
    print("대표이사 \\(name)")
}
//할당할 경우 바로 할당 가능
startup?.CEO?.name="양준수"

옵셔널 체인 특징

옵셔널 체인으로 참조된 값은 무조건 옵셔널 타입으로 반환된다.

옵셔널 체인 과정에서 옵셔널 타입들이 여러 번 겹쳐있더라도 중첩되지 않고 한 번만 처리된다.

옵셔널 강제 해제

!를 사용