在switch语句中显式转换类型是否安全,其中case是类型I转换为?

时间:2016-02-29 12:51:19

标签: swift

我有这段代码,我想知道在这里使用as!是否安全。

switch value {
    case is [String]:
        setCustomAttributeArrayWithKey(key, array: value as! [String])
    default:
        ...
}

2 个答案:

答案 0 :(得分:7)

在您的特定情况下它是安全的,但容易出错:如果 您重复使用该代码并仅更改[String]的一次出现 但忘记改变其他事件?一般来说,强迫演员 尽可能避免使用as!

可以在这里使用模式绑定:

switch value {
    case let stringArray as [String]:
        setCustomAttributeArrayWithKey(key, array: stringArray)
    default:
        ...
}

以不那么容易出错的方式做同样的事情:不重复 [String]类型,as!没有强制转换。

答案 1 :(得分:1)

是的,它的安全性,因为交换机绑定已经确定它是一个非可选的String数组并且具有有效值。这假设值在运行时可以是任何类型。