[swift] 타입 캐스팅을 이용한 객체 인스턴스 확인

타입 캐스팅은 스위프트에서 객체의 타입을 확인하거나 다른 타입으로 변환할 때 사용하는 기능입니다. 객체 인스턴스의 타입을 확인하고, 해당 타입으로 변환하는 방법에 대해 알아보겠습니다.

타입 확인(Type Checking)

타입 확인은 is 키워드를 사용하여 객체 인스턴스가 특정 클래스나 프로토콜의 인스턴스인지 확인하는 것을 말합니다. 다음은 타입 확인의 예시입니다.

class Animal {
    var name: String = ""
}

class Dog: Animal {
    var breed: String = ""
}

class Cat: Animal {
    var color: String = ""
}

let animal = Animal()
let dog = Dog()
let cat = Cat()

print(animal is Animal) // true
print(animal is Dog)    // false
print(dog is Animal)    // true

다운캐스팅(Downcasting)

다운캐스팅은 상위 클래스 타입을 하위 클래스의 타입으로 변환하는 것을 말합니다. 다운캐스팅을 위해서는 명시적으로 타입을 변환해주어야 합니다.

let animal: Animal = Dog()
if let dog = animal as? Dog {
    print("타입 변환 성공 - \(dog.breed)")
} else {
    print("타입 변환 실패")
}

위 코드에서 animalDog 클래스의 객체이지만, 상위 클래스 타입으로 선언되었기 때문에 다운캐스팅을 통해 실제 하위 클래스의 프로퍼티에 접근할 수 있습니다.

타입 캐스팅은 스위프트에서 안전성을 보장하고, 객체의 타입 변환을 용이하게 해주는 중요한 기능입니다.

참고 자료