let myValue = record.object(forKey:"comment") as! String
//object(forKey:) 메소드가 반환하는 값을 String으로 처리해야한다고 컴파일러에게 알림
Upcasting : 특정 클래스의 객체가 상위 클래스들 중의 하나로 변형되는 것
1. as 키워드를 사용하여 수행
2. 변환이 성공할 것이라고 컴파일러가 알려줄 수 있기 때문에 보장된 변환이라고도 한다.
let myButton: UIButton = UIButton()
let myControl = myButton as UIControl
//Upcasting
DownCasting : 어떤 클래스에서 다른 클래스로 만드는 변환이 일어날 때 발생
1. 변환이 안전하게 수행되거나 유효하지 않은 변환 시도를 컴파일러가 잡아낸다는 보장이 없다.
2. 보통 어떤 클래스에서 그 클래스의 하위 클래스로 변환
3. as! 키워드로 수행되며, 강제 변환이라고 한다.
let myTextView = myScrollView as! UITextView
//Downcasting
if let myTextView = myScrollView as? UITextView {
print("Type cast to UITextView succeeded")
} else {
print("Type cast to UITextView failed")
}
//만약 변환이 성공적이라면 지정한 타입의 옵셔널 값 반환
//오류가 발생한다면 옵셔널 값은 nil
if myobject is MyClass {
//myobject가 MyClass의 인스턴스인지를 검사
}