Apple 为我们提供了一个向下转换相同类型对象的示例:
let someObjects: [AnyObject] = [
Movie(name: "2001: A Space Odyssey", director: "Stanley Kubrick"),
Movie(name: "Moon", director: "Duncan Jones"),
Movie(name: "Alien", director: "Ridley Scott")
]
然后,我们可以通过创建一个抽象变量“对象”并将其转换为我们期望的(电影)来访问每个单独的属性:
for object in someObjects {
let movie = object as! Movie
print("Movie: '\(movie.name)', dir. \(movie.director)")
}
但是如果我们进入下一个层次,例如我们有电影的子类:
无声电影
喜剧
行动
每个都具有相同的属性 - 名称和导演
我尝试将它与我们上面做的“电影”一样,因为我假设它是一个父类,它能够识别它的子类,但当然这不起作用,否则这个问题就不存在了!