[swift] 타입 캐스팅

HongDuHyeon·2023년 4월 2일
0
post-thumbnail
더울수록 시원한 맛 삐삐리 빼삐꼬

타입 캐스팅이란 ?

인스턴스의 타입을 확인하거나 어떠한 클래스의 인스턴스를 해당 클래스 계층 구조의 슈퍼 클래스나 서브 클래스로 취급하는 방법

swift에서 타입 캐스팅은 어떻게 하나요 !

아래 두개의 연산자는 값의 타입을 확인하거나 값을 다른 타입으로 변환하는데에 사용된다.

is

인스턴스의 타입이 어떠한 타입인지 확인할 수 있다.


...

let library = [
    Movie(name: "기생충", director:"봉준호"),
    Song(name: "Butter", artist:"BTS"),
    Movie(name: "올드보이", director:"박찬욱"),
    Song(name: "Wonderwall", artist:"Oasis"),
    Song(name: "Rain", artist:"이적" )
]

var movieCount = 0
var songCount = 0

for item in library {
    if item is Movie {
        movieCount += 1
    } else if item is Song {
        songCount += 1
    }
}

print("Media library contains \(movieCount) movies and \(songCount) songs")

// Media library contains 2 movies and 3 songs

as

특정 클래스 타입에 상수 또는 변수는 하위 클래스 인스턴스를 참조할 수 있다.

let library = [
    Movie(name: "기생충", director:"봉준호"),
    Song(name: "Butter", artist:"BTS"),
    Movie(name: "올드보이", director:"박찬욱"),
    Song(name: "Wonderwall", artist:"Oasis"),
    Song(name: "Rain", artist:"이적" )
]

for item in library {
    if let movie = item as? Movie {
        print("Movie: \(movie.name), dir. \(movie.director)")
    } else if let song = item as? Song {
        print("Song: \(song.name), by \(song.artist)")
    }
}
/*
Movie: 기생충, dir. 봉준호
Song: Butter, by BTS
Movie: 올드보이, dir. 박찬욱
Song: Wonderwall, by Oasis
Song: Rain, by 이적
*/

+추후 좀 더 정리 예정

profile
마음이 시키는 프론트엔드.. RN과 IOS를 곁들인..

0개의 댓글