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

Why would I use typecasting in Swift?

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

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

提前致谢!

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

示例:

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

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

只有知道this视图控制器实际上是一个FlipsideViewController。如果你不告诉编译器,你就不能设置它的 delegate 属性 (普通的 UIViewController 没有 delegate 属性)。

所以总结一下:常见的向下转换情况是当一个类型需要被声明为超类时,因为 any 子类需要被接受,但是在一个特定的实例中你知道它是什么子类,所以你需要向下转换到那个。

当您不确定任何变量或 class 的类型时,使用类型转换。 假设一个变量值是从服务器响应中设置的。它可以是多种对象类型,如 String 、 Int 、 Double 。然后你需要类型转换来知道你正在寻找什么类型。