야곰의 스위프트 프로그래밍
    • 01
      스위프트 시작하기
    • 시작 전 필독사항
      이름짓기, 콘솔로그, 문자열 보간법
    • 02
      문법
    • 상수와 변수
      기본 데이터 타입
      Any, AnyObject, nil
      컬렉션 타입
      함수 기본
      함수 고급
      조건문
      반복문
      옵셔널
      옵셔널 값 추출
      구조체
      클래스
      열거형
      값 타입과 참조 타입
      클로저
      다양한 클로저표현
      프로퍼티
      프로퍼티 감시자
      상속
      인스턴스의 생성과 소멸
      옵셔널 체이닝과 nil 병합 연산자
      타입캐스팅
      assert와 guard
      프로토콜
      익스텐션
      오류처리
    • 03
      고차함수 활용
    • 고차함수
    • 04
      마무리
    • 더 알아보기
    타입캐스팅
    배우기
    02 문법
    타입캐스팅

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

    타입 확인

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

    업 캐스팅

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

    다운 캐스팅

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

    조건부 다운 캐스팅

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

    강제 다운 캐스팅

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

    관련문서

    실습 내용

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

    Tip.

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

    let someInstance: Int? = 100

    print(someInstance as Any)

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

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

    질문하기