快速使用 AnyClass 对象与 as?

标签 swift casting type-conversion

我想这样做:

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/

相关文章:

c++ - 构造函数重载选择 cast operator 而不是 struct type

从程序参数传递的 C++ 信号名称

c++ - 用户定义的转换顺序

c++ - 隐式转换行为不一致

ios - 使用 UIEdgedInset 的自定义 UISlider 渲染效果不佳

ios - 构建 map 应用程序 ios 时出现 fatal error

C++ 自动类型转换

c - bison/flex 中的多种数据类型

ios - 使用自动布局,但代价是没有框架

ios7 - 自定义 UITableViewCell 编辑模式不起作用