Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Switching on UIButton title: Expression pattern of type 'String' cannot match values of type 'String?!'

I'm trying to use a switch in an @IBAction method, which is hooked to multiple buttons

@IBAction func buttonClick(sender: AnyObject) {

        switch sender.currentTitle {
            case "Button1":
                print("Clicked Button1")
            case "Button2":
                print("Clicked Button2")
            default:
                break
        }

When I try the above, I get the following error:

Expression pattern of type 'String' cannot match values of type 'String?!'

like image 791
Andrei Avatar asked Apr 23 '16 17:04

Andrei


1 Answers

currentTitle is an optional so you need to unwrap it. Also, the type of sender should be UIButton since you are accessing the currentTitle property.

@IBAction func buttonClick(sender: UIButton) {
    if let theTitle = sender.currentTitle {
        switch theTitle {
            case "Button1":
                print("Clicked Button1")
            case "Button2":
                print("Clicked Button2")
            default:
                break
        }
    }
}
like image 70
Marc Khadpe Avatar answered Oct 22 '22 12:10

Marc Khadpe