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

标签 ios uibutton switch-statement 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
    }     
}

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

最佳答案

目前编译器中似乎存在一个错误,即隐式解包选项不能在 switch 语句中使用。相反,您可以使用可选绑定(bind)来满足编译器的要求。作为一个额外的好处,这将处理 titleLabel.text 为 nil 的情况。

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
    }
}

关于ios - Swift:UIButton textLabel.text 值在 switch 语句中不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24454686/

相关文章:

ios - 使用 AssetsLibrary 框架 iPhone 访问库中的视频?

iphone - XCode 4.5 意外退出断言失败

iphone - UISearchbar 取消按钮的图像

switch-statement - "Case must be a string or an integral constant"错误?

Javascript - Nodejs 切换全局变量未更改

iphone - iOS 自动布局 : Resizing container with constraints

objective-c - UIButton setAttributedTitle : forState: Not Showing Up

ios - 自动布局错误

android - 在 ActionBar 中获取 Switch 实例

ios - Xcode:多个目录和子目录