苹果给了我们向下转换相同类型的对象作为这样的一个例子:如何向下转换可以是多种类型的对象?
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)")
}
但是,如果我们去到一个新的水平,并举例来说,我们有电影的子类的内容:
无声电影
喜剧
行动
其中每一种都具有相同的属性 - 命名&主任
我试着投它我们上面那样的“电影”,因为我假定以同样的方式一个父类,它将能够识别它的子类,但当然这不起作用,否则这个问题就不存在了!
你可以显示代码,你是如何试图以相同的方式投下子类的? – ronatory
我无法重现您的问题。当我尝试它时它工作正常(不是这是个好主意,你不应该经常需要'AnyObject',并且如果你能避免它们,你通常应该避免使用子类和向下转换。)作为罗恩笔记,你应该显示*不工作的代码,而不仅仅是*的代码*。 –
不要忘记回来接受答案或投票答案,帮助你。 – JAL