Swift.Type Casting

junseole·2021년 8월 25일
0

Swift-Basic

목록 보기
12/12
post-thumbnail

스위프트 프로그래밍 3판을 보고 정리한 내용입니다.

스위프트 타입 캐스팅

스위프트의 타입 캐스팅은 is 와 as 로 구현했다.

is

타입 확인 연산자인 is는 인스턴스가 어떤클래스의 인스턴스인지 타입을 확인해 볼수 있습니다.

class Person{
    let name:String
    
    init(name:String) {
        self.name = name
    }
}

class Student:Person{
    let school:String
    
    init(school:String,name:String){
        self.school = school
        super.init(name: name)
    }
}

let person:Person = Person(name: "junseole")
let student:Student = Student(school: "middle", name: "gildong")

print(person is Student) // false
print(person is Person) // true
print(student is Person) //true
print(student is Student) //true

타입캐스트 연산자 (as? as!)

as? 는 다운캐스팅이 실패했을 경우 nil을 반환하고

as! 는 실패했을 경우 런타임 오류를 발생시킨다.

if let actionOne: Person = student as? Student{
    print(actionOne.name) //gildong 출력
}else{
    print("출력 2")
}

if let actionTwo: Person = person as? Student{
    print("출력 1")
}else{
    print("출력 2")
}// 출력 2

Any,AnyObject

Any는 함수 타입을 포함한 모든 타입을 뜻하고 , AnyObject는 클래스 타입만을 뜻한다.

profile
Swift와 함께 여행중입니다.

0개의 댓글