快速使用AnyClass对象as?

时间:2016-07-18 22:02:40

标签: swift casting type-conversion

我想这样做:

let myClass: AnyClass = functionReturningClass() // ex. String.self
if let myObject = functionReturningObject() as? myClass { ...

as? myClass无法编译(' myClass不是类型')。我该怎么办?

1 个答案:

答案 0 :(得分:0)

不幸的是,这是不可能的 - as必须知道它在编译时要转换的类型。您无法为as提供变量类型。如果你必须强制转换,那么你只能在编译时使用泛型和重载等功能。

考虑一下 - 编译器允许您使用哪些方法调用生成的myObject?如果不知道myClass的运行时间值,就不可能说出来。因此,这很有道理,这不起作用。

您仍然可以从functionReturningObject()返回子类。您仍然可以将它们转换为不同类型。您无法决定在运行时动态转换它们的类型。