我想这样做:
let myClass: AnyClass = functionReturningClass() // ex. String.self
if let myObject = functionReturningObject() as? myClass { ...
as? myClass
无法编译(' myClass不是类型')。我该怎么办?
答案 0 :(得分:0)
不幸的是,这是不可能的 - as
必须知道它在编译时要转换的类型。您无法为as
提供变量类型。如果你必须强制转换,那么你只能在编译时使用泛型和重载等功能。
考虑一下 - 编译器允许您使用哪些方法调用生成的myObject
?如果不知道myClass
的运行时间值,就不可能说出来。因此,这很有道理,这不起作用。
您仍然可以从functionReturningObject()
返回子类。您仍然可以将它们转换为不同类型。您无法决定在运行时动态转换它们的类型。