快速类型转换

Ran*_*jay 2 casting swift

我对 Swift 中的类型转换有点困惑。

有一个小小的疑问。是什么区别as?as!并且只as。我们可以说“as”类似于is.

提前致谢。

小智 5

'as' 关键字用于强制转换。

“作为”示例:

let calcVC = destinationViewController as CalculatorViewController
Run Code Online (Sandbox Code Playgroud)

此行将 destinationViewController 转换为 CalculatorViewController。但是,如果 destinationViewController 不是 CalculatorViewController 或其子类,则会崩溃。

为了防止崩溃,您可以将“if let”与“as?”一起使用...

'作为?' 例子:

if let calcVC = destinationViewController as? CalculatorViewController {
   // ... write code to execute if destinationViewController is in fact a CalculatorViewController
}
Run Code Online (Sandbox Code Playgroud)

您甚至可以在尝试使用“is”关键字执行“as”之前进行检查...

“是”示例:

if destinationViewController is CalculatorViewController {
   //...
}
Run Code Online (Sandbox Code Playgroud)