我想这样做:
let myClass: AnyClass = functionReturningClass() // ex. String.self
if let myObject = functionReturningObject() as? myClass { ...
作为? myClass
无法编译(“myClass 不是类型”)。我能做什么?
最佳答案
不幸的是,这是不可能的——as
必须在编译时知道它要转换成的类型。您不能向 as
提供变量类型。如果您必须强制转换,那么您只能使用在编译时工作的泛型和重载等功能。
想一想——编译器应该允许您在生成的 myObject
上调用哪些方法?不知道 myClass
的运行时值是不可能说的。因此,这是行不通的。
您仍然可以从 functionReturningObject()
返回子类。您仍然可以将它们转换为不同的类型。您只是无法决定在运行时将它们动态转换为哪种类型。
关于快速使用 AnyClass 对象与 as?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38446684/