打开UIButton标题:"String"类型的表达式模式不能匹配"String ?!"类型的值

And*_*rei 9 types pattern-matching switch-statement ios swift

我正在尝试在一个@IBAction方法中使用一个开关,它连接到多个按钮

@IBAction func buttonClick(sender: AnyObject) {

        switch sender.currentTitle {
            case "Button1":
                print("Clicked Button1")
            case "Button2":
                print("Clicked Button2")
            default:
                break
        }
Run Code Online (Sandbox Code Playgroud)

当我尝试上述操作时,出现以下错误:

"String"类型的表达式模式不能匹配"String?!"类型的值

Mar*_*dpe 14

currentTitle是可选的,所以你需要打开它.此外,sender应该是UIButton您访问该currentTitle属性的类型.

@IBAction func buttonClick(sender: UIButton) {
    if let theTitle = sender.currentTitle {
        switch theTitle {
            case "Button1":
                print("Clicked Button1")
            case "Button2":
                print("Clicked Button2")
            default:
                break
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

  • @Guig可能因为选项实际上是枚举,所以它与交换机的逻辑相混淆.如果您需要将非可选开关与可选开关进行比较,您仍然可以通过添加?到最后例如`case"Button1"?:` (3认同)