我有这段代码,我想知道在这里使用as!
是否安全。
switch value {
case is [String]:
setCustomAttributeArrayWithKey(key, array: value as! [String])
default:
...
}
答案 0 :(得分:7)
在您的特定情况下它是安全的,但容易出错:如果
您重复使用该代码并仅更改[String]
的一次出现
但忘记改变其他事件?一般来说,强迫演员
尽可能避免使用as!
。
可以在这里使用模式绑定:
switch value {
case let stringArray as [String]:
setCustomAttributeArrayWithKey(key, array: stringArray)
default:
...
}
以不那么容易出错的方式做同样的事情:不重复
[String]
类型,as!
没有强制转换。
答案 1 :(得分:1)
是的,它的安全性,因为交换机绑定已经确定它是一个非可选的String数组并且具有有效值。这假设值在运行时可以是任何类型。