我知道可以按照以下问题中的描述测试可选与可选:Swift: testing against optional value in switch case
但我想做的是用可选大小写值测试一个非可选值:
switch nonOptionalView{
case optionalView1:
// Do something
case optionalView2:
// Do something else
}
Xcode 返回错误“可选 xxx 的值未展开” 如果我加一个“?”在 case 语句的末尾,我得到“?模式无法匹配‘UIView’类型的值”
最佳答案
目前 Swift 标准库不支持模式匹配可选值。但是,您可以使用 if
/else if
语句轻松执行您的逻辑:
if nonOptionalView === optionalView1 {
// Do something
} else if nonOptionalView === optionalView2 {
// Do something else
}
如果你真的希望能够模式匹配可选值,你可以使用 operator overloading .要重载模式匹配运算符 ~=
,请将以下代码放入您的项目中:
public func ~=<T : Equatable>(a: T?, b: T?) -> Bool {
return a == b
}
现在您将能够很好地匹配可选值:
switch nonOptionalView {
case optionalView1:
// Do something
case optionalView2:
// Do something else
default:
// Handle default case
}
关于swift - 根据可选案例值切换测试非可选,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32234375/