swift - 为什么要在 Swift 中使用类型转换?

标签 swift casting typecast-operator

我为什么要在 Swift 中使用类型转换?

我正在学习这门语言,并且遇到了类型转换的主题(例如向下和向上转换等),但在我看来这似乎有点麻烦。为什么我要对一个对象进行类型转换?这什么时候在现实生活中的应用程序或代码中有用? 我在网上看了一会儿,但似乎找不到明确的答案。我真的坚持这个所以一些帮助会很棒!

提前致谢!

最佳答案

这里的关键案例是沮丧。您会这​​样做,因为可能知道对象的真正类型,但编译器不知道,因此它不会让您将该类型的消息发送给对象。

例子:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if let dest = segue.destination as? FlipsideViewController {
        dest.delegate = self
    }
}

segue.destination 类型为 UIViewController;这只是一个事实,并不取决于您,因为 segue 的目的地需要能够是任何类型的 UIViewController。

只有知道这个 View Controller 实际上是一个FlipsideViewController。如果你不告诉编译器,你不能设置它的 delegate 属性(一个普通的 vanilla UIViewController 没有 delegate 属性)。

所以总结一下:常见的向下转型情况是当一个类型需要被声明为父类(super class)时,因为任何子类都需要被接受,但是在特定的实例中你知道什么 它是子类,因此您需要向下转换。

关于swift - 为什么要在 Swift 中使用类型转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51595659/

相关文章:

c# - 从 Animal[] 转换为 Dog[] 的最佳方式

c - 将 char * 类型转换为 int *

C++ 在转换运算符和可变参数构造函数之间混淆

ios - 为 UITableView 使用 RxCocoa 扩展时,如何控制 canEditRowAtIndexPath

Swift 编译器错误,同时通过 getter 函数提供属性来遵守协议(protocol)

c# - 如何使用空检查优化一系列 as-operations?

ios - 检查类型并转换为具体类型以进行功能签名

swift - 服务器记录中的 CKAsset 不包含 fileURL,甚至无法检查 nil

ios - 同时更改 UILabel 文本和位置不起作用

Java : Operators and Typecasting