[swift] 옵셔널 체이닝을 사용한 옵셔널 타입의 타입 캐스팅

이번에는 Swift에서 옵셔널 체이닝과 옵셔널 타입의 타입 캐스팅에 대해 알아보겠습니다.

옵셔널 체이닝

옵셔널 체이닝은 옵셔널 타입의 속성 또는 메소드에 접근할 때 사용하는 방법입니다. 옵셔널 값이 nil이면 체인 전체가 nil을 반환하고, 값이 존재하면 계속해서 체인을 이어나갈 수 있습니다.

예를 들어, 다음과 같이 person이라는 옵셔널 객체가 있을 때 person.address?.street와 같이 옵셔널 체이닝을 사용하여 address가 nil이면 nil을 반환하고, 그렇지 않으면 street에 접근할 수 있습니다.

class Address {
    var street: String = "Main Street"
}

class Person {
    var address: Address? = Address()
}

let person: Person? = Person()

if let street = person?.address?.street {
    print("Street: \(street)")
} else {
    print("No street address found")
}

옵셔널 타입의 타입 캐스팅

옵셔널 타입의 타입 캐스팅은 옵셔널이나 옵셔널이 아닌 타입 사이의 변환에 사용됩니다. 타입 캐스팅 연산자 as?as!를 사용하여 옵셔널 타입 간의 변환을 수행할 수 있습니다.

다음의 예시는 as? 연산자를 사용하여 person 객체를 Person 타입으로 타입 캐스팅합니다.

let person: Any = Person()
let newPerson = person as? Person
if newPerson != nil {
    print("Casting successful")
} else {
    print("Casting failed")
}

이와 같이 옵셔널 체이닝과 옵셔널 타입의 타입 캐스팅은 Swift에서 안전하고 효율적인 코드를 작성하는 데 도움이 됩니다.

참고 자료: The Swift Programming Language - Optional Chaining, The Swift Programming Language - Type Casting