Swift:UIButton textLabel.text值在switch语句中不可用

1 switch-statement uibutton ios swift

我是Swift和iOS开发的新手,所以我正在尝试构建一个用于学习目的的计算器应用程序.但是,我遇到了一个错误.我用我们所代表的数字命名了所有按钮,所以我通过sender.titleLabel.text在buttonPress IBAction中检索标题.然后,我将其传递给switch语句,以确定按钮是数字还是操作符.

func handleButton (sender:UIButton) {
switch sender.titleLabel.text {
case "1","2","3","4","5","6","7","8","9","0" :
    println(sender.titleLabel.text)
default:
    break
    }     
}
Run Code Online (Sandbox Code Playgroud)

错误是sender.titleLabel.text不会绑定到我输入的字符串值 - 也不会绑定任何字符串值 - 即使它是String类型.

dre*_*wag 5

目前编译器中似乎存在一个错误,其中Implicitly Unwrapped Optionals不能用于switch语句.相反,您可以使用可选绑定来满足编译器.作为额外的加号,这将处理titleLabel.text为零的情况.

func handleButton (sender:UIButton) {
    if let text = sender.titleLabel.text {
        switch text {
            case "1","2","3","4","5","6","7","8","9","0" :
                println(sender.titleLabel.text)
            default:
                break
        }
    }
    else {
        // sender.titleLabel.text is nil
    }
}
Run Code Online (Sandbox Code Playgroud)

  • @ThoughtfulWizard实际上我认为这是编译器的一个错误,因为从技术上讲它是一个隐式解包可选,不应该要求"解包".现在,我建议的代码满足编译器,甚至更好,它处理文本为零的情况. (2认同)