Skip to content

Instantly share code, notes, and snippets.

@imufun
Created February 18, 2019 11:19
Show Gist options
  • Select an option

  • Save imufun/d9c52da15709721ebd3299cc3c5ca651 to your computer and use it in GitHub Desktop.

Select an option

Save imufun/d9c52da15709721ebd3299cc3c5ca651 to your computer and use it in GitHub Desktop.
TypeCasting
import Foundation
//https://docs.swift.org/swift-book/LanguageGuide/TypeCasting.html
class MovieList {
var name : String
init(name: String) {
self.name = name
}
}
class Movie: MovieList{
var director: String
init( name: String, director: String) {
self.director = director
super.init(name: name)
}
}
class Artist: MovieList{
var artist: String
init(name: String, artist: String) {
self.artist = artist
super.init(name: name)
}
}
let library = [
Movie(name:"Alita : Battel angle", director: "James Cameron"),
Artist(name: "Rosa Salazar", artist: "Jennifer Connelly") ,
Movie(name:"Avater", director: "James Cameron"),
Artist(name: "Leo", artist: "Alexzerder") ,
Movie(name:"Alita : Battel angle", director: "James Cameron"),
Artist(name: "Rosa Salazar", artist: "Jennifer Connelly") ,
Movie(name:"Avater", director: "James Cameron"),
Artist(name: "Leo", artist: "Alexzerder"),
Artist(name: "Leo", artist: "Alexzerder")
]
var movieCount = 0
var artistCount = 0
for item in library {
if item is Movie {
movieCount += 1
} else if item is Artist{
artistCount += 1
}
}
for item in library{
if let movie = item as? Movie{
print("\(movie.name) & \(movie.director)")
}
print("-----------------------------------")
if let artist = item as? Artist{
print("\(artist.name) \(artist.artist)")
}
}
print("\(movieCount) \(artistCount)")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment