[swift] 타입 캐스팅을 이용한 타입 변환

Swift에서는 타입 캐스팅(Type Casting)을 사용하여 인스턴스의 타입을 확인하거나 다른 타입으로 변환할 수 있습니다. 이는 클래스의 상속 구조 안에서 유용하게 활용됩니다.

1. 인스턴스의 타입 확인

인스턴스가 특정 클래스의 인스턴스인지, 또는 해당 클래스의 서브클래스의 인스턴스인지 확인하기 위해서는 is 키워드를 사용합니다. 예를 들어:

if someInstance is SomeClass {
    print("someInstance는 SomeClass의 인스턴스입니다")
} else if someInstance is SubclassOfSomeClass {
    print("someInstance는 SomeClass의 서브클래스(SubclassOfSomeClass)의 인스턴스입니다")
}

2. 다운캐스팅

서브클래스 타입의 인스턴스를 슈퍼클래스 타입으로 다운캐스팅하기 위해서는 as? 또는 as!를 사용합니다. 다운캐스팅이 성공하면 옵셔널 값을 가질 수 있는 as?를 사용하고, 다운캐스팅이 실패할 경우 런타임 에러를 발생시키는 as!를 사용합니다. 다운캐스팅이 가능한 경우 예시는 다음과 같습니다:

if let subClassInstance = someInstance as? SubclassOfSomeClass {
    print("다운캐스팅이 성공하였습니다: \(subClassInstance)")
} else {
    print("다운캐스팅에 실패하였습니다")
}

주의: 다운캐스팅이 실패하면 nil이 반환됩니다.

타입 캐스팅은 Swift에서 다양한 상황에서 유연한 타입 처리를 위해 사용됩니다. 안정적인 코드를 작성하고 다양한 타입을 처리하기 위해 Swift에서 제공하는 타입 캐스팅에 익숙해지는 것이 중요합니다.

더 많은 정보는 Swift 공식 문서를 참고해주세요.