스위프트 코드를 작성할 때, 컴파일러가 어떤 값의 특정 타입을 식별하지 못하는 경우가 있음. 이럴때 as 키워드를 사용하여 코드가 의도하는 값의 타입을 컴파일러에게 알려준다. 이를 타입 캐스팅 이라고 한다.
예를 들어, 다음은 object(forKey:) 메서드가 반환하는 값을 String 타입으로 처리해야 한다고 컴파일러에게 알려주는 코드다.
let myValue = record.object(forKey: 'Comment') as! String - 업 캐스팅: 특정 클래스의 객체가 상위 클래스들 중의 하나로 변형되는 것. -> as 키워드를 사용하여 수행되며, 이러한 변환은 성공할 것이라고 컴파일러가 알려줄 수 있기 때문에 보장된 변환 이라고도 한다.
UIButton은 UIControl의 하위 클래스이므로 다음과 같이 안전하게 업캐스팅될 수 있다. let myButton: UIButton = UIButton() let myControl = myButton as UIControl
- 다운 캐스팅: 어떤 클래스에서 다른 클래스로 만드는 변환이 일어날 때 발생한다. -> 이런 변환이 안전하게 수행된다거나 유효하지 않은 변환 시도를 컴파일러가 잡아낼 것이라는 보장을 할 수 없다. 다운캐스팅으로 유효하지 않은 변환을 했는데 컴파일러가 발견하지 못한다면, 대부분의 경우 런타임에서 에러가 발생할 것이다. - 다운캐스팅은 보통 어떤 클래스에서 그 클래스의 하위 클래스로 변환하게 된다. as! 키워드로 수행되며, **강제 변환**이라고 한다. <img src="/go/Pasted image 20250722151214.png" alt="Pasted image 20250722151214.png"> - UIScrollView 객체를 UITextView 클래스로 변환하기 위해서는 다운캐스팅이 필요하다. - 다운캐스팅을 하는 더 안전한 방법: as?를 사용한 옵셔널 바인딩을 사용하는 것이다. - 옵셔널, 타입 캐스팅: 스위프트 프로그래밍의 핵심 부분으로, 오류 없는 코드를 만들기 위해 특별히 설계된 것.