타입캐스팅
배우기
02 문법
타입캐스팅

스위프트의 타입캐스팅은 인스턴스의 타입을 확인 하는 용도 또는 클래스의 인스턴스를 부모 혹은 자식 클래스의 타입으로 사용할 수 있는지 확인 하는 용도로 사용합니다. is, as를 사용합니다.

타입 확인

is를 사용하여 타입을 확인합니다.

업 캐스팅

as를 사용하여 부모클래스의 인스턴스로 사용할 수 있도록 컴파일러에게 타입정보를 전환해줍니다. Any 혹은 AnyObject로도 타입정보를 변환할 수 있습니다. 암시적으로 처리되므로 꼭 필요한 경우가 아니라면 생략해도 무방합니다.

다운 캐스팅

as? 또는 as!를 사용하여 자식 클래스의 인스턴스로 사용할 수 있도록 컴파일러에게 인스턴스의 타입정보를 전환해줍니다.

조건부 다운 캐스팅

as?를 사용합니다. 캐스팅에 실패하면, 즉 캐스팅하려는 타입에 부합하지 않는 인스턴스라면 nil을 반환하기 때문에 결과의 타입은 옵셔널 타입입니다.

강제 다운 캐스팅

as!를 사용합니다. 캐스팅에 실패하면, 즉 캐스팅하려는 타입에 부합하지 않는 인스턴스라면 런타임 오류가 발생합니다. 캐스팅에 성공하면 옵셔널이 아닌 일반 타입을 반환합니다.

관련문서

실습 내용

타입에 굉장히 엄격한 스위프트에서 타입캐스팅은 굉장히 중요한 개념입니다. 꼭 잘 익혀두세요.

Tip.

타입캐스팅 전의 강의들에서 print 함수를 사용하여 옵셔널 인스턴스를 출력하고 했을 때 경고(warning)이 출력되었던 것을 보셨나요? 타입캐스팅을 활용하여 말끔히 해결해 줄 수 있습니다.

let someInstance: Int? = 100

print(someInstance as Any)

이런식으로 말이죠. 이전 강의를 복습하는 차원에서 경고를 모두 없애보는 것은 어떨까요?

더불어 팁을 드리자면 nil 병합 연산자로도 그것을 해결해 볼 수 있습니다. 두 방법 모두 고민해 보세요 :)

질문하기
추가 자료
no files uploaded

추가 자료가 없습니다

여기서 새로운 학습 자료를 확인하세요!
선생님이 추가한 자료들을 바로 확인할 수 있어요.