
TIL 11일 차 - Swift 문법 타입 캐스팅
타입 캐스팅이란?
이 객체의 진짜 타입이 뭔지 확인
이 타입으로 써도 되는 것인지 물어보기
타입캐스팅이 필요한 상황?
let animals; [Any] = ["모찌", 1, true]
이 animals 안에 String, Int, Bool 다 섞여있는데 스위프트는 모두 Any라고 받아들인다.
print(animals[0].count) // 에러 발생
왜 에러가 발생하냐면 animals의 0번째 인덱스의 값이 String인지 확신이 없기 때문임
이럴 때 타입캐스팅을 써야 한다!
let value: Any = "Hello"
if let text = value as? String {
print(text.count)
}
// 해석: value가 String이면 text에 넣어서 print하고 아니면 nil
그리고 as!라는 것도 있는데
좀 극단적으로 얘는 무조건 이 타입이다. 틀리면 앱 죽어도 됨 그 정도임
let value: Any = "Hello"
let text = value as! String
// 만약 value가 String이 아니면 바로 앱 폭발함
is는 타입을 확인하는 용도
let value: Any = 10
if value is Int {
print("value는 정수임")
}
// value가 정수이면 true라서 print문 실행 됨
클래스에서의 타입 캐스팅 이용하기
class Animal {}
class Dog: Animal {
func bark() {
print("멍멍멍뭉")
}
}
let animal: Animal = Dog()
// animal.bark() 당연히 에러임
// 스위프트는 animal을 Animal로만 알고있음
if let dog = animal as? Dog {
dog.bark()
}'iOS > Swift ' 카테고리의 다른 글
| [iOS- Swift] 스위프트 필수 문법 문제 2번 풀이 (0) | 2026.01.09 |
|---|---|
| [iOS-Swift] 스위프트 필수 문법 문제 1번 풀이 (0) | 2026.01.09 |
| [iOS-Swift] 접근 제어자 (0) | 2026.01.08 |
| [iOS-Swift] 중첩타입 (0) | 2026.01.08 |
| [iOS-Swift] enum 열거형 (0) | 2026.01.08 |