如何处理switch语句中的选项

时间:2017-02-04 12:13:08

标签: swift switch-statement optional forced-unwrapping

我有以下代码:

for compareValues in [(optionalVal1, optionalVal2), (optionalVal3, optionalVal4)] {
    switch compareValues {
    case (nil, nil):
      break
    case (_, nil):
      return true
    case (nil, _):
      return false
    case let (lValue, rValue):
      return lValue < rValue
    }
}

这不编译,最后一行触发了这个错误:

  

可选类型的值&#39;字符串?&#39;没有打开;你的意思是用吗?   &#39;!&#39;或者&#39;?&#39;?

您如何建议在没有强制展开lValuerValue的情况下处理此

2 个答案:

答案 0 :(得分:2)

要打开case语句中的选项,可以使用

"hi bot there"

答案 1 :(得分:0)

鉴于您已经了解case let (lValue, rValue)声明,您知道他们都是非nil,您可以安全地强行解开它们:

for compareValues in values {
    switch compareValues {
    case (nil, nil):
        break
    case (_, nil):
        return true
    case (nil, _):
        return false
    case let (lValue, rValue):
        return lValue! < rValue!
    }
}