在swift中输入Casting

时间:2016-03-03 02:28:55

标签: swift casting

我对Swift中的类型转换感到困惑。

有一点疑问。 " as?"," as!"之间有什么区别?并且只有" as"。 我们可以说" as"类似于"是"。

提前致谢。

2 个答案:

答案 0 :(得分:0)

'as'关键字用于投射。

'作为'例子:

let calcVC = destinationViewController as CalculatorViewController

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

为了防止崩溃,你可以使用'if let'和'as?'...

“为?例如:

if let calcVC = destinationViewController as? CalculatorViewController {
   // ... write code to execute if destinationViewController is in fact a CalculatorViewController
}

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

'是'示例:

if destinationViewController is CalculatorViewController {
   //...
}

答案 1 :(得分:0)

is用于检查值的类型,而as用于将值转换为其他类型。

条件格式as?返回您要向下转换的类型的可选值。

示例:

let number: Int = 1 
if number as? Int {
print ("Int")
} 

如果数字是Int类型,您正在“询问”。

例如,您要强制使用as!,让您的租借号码属于某种类型,如果不是,则您将要崩溃!

示例:

if number as! String { //CRASH

}