unwrapping button.titleLabel.text

时间:2015-07-25 05:12:51

标签: swift optional unwrap

我需要将按钮的文本与变量进行比较。

@IBAction func CheckifATrue(sender: AnyObject) {
    if let thisbutton = sender.titleLabel.text {
        if thisbutton == theAnswer.text {
            score++
            println("Correct")}
    }
}

给我一​​个错误,迫使我放!!在titleLabel之后。我不能这样做,因为有可能(实际上 - 确定)按钮titleLabel将为零。为什么if let语句不让我解开?是否有另一种方法来拉取按钮文本,我可以安全地删除可选的if if let和only执行代码,如果有效?

3 个答案:

答案 0 :(得分:1)

您需要将发件人的类型从AnyObject更改为UIButton,之后您可以这样解开:

@IBAction func CheckifATrue(sender: UIButton) {

    if let thisbutton = sender.titleLabel?.text {
        if thisbutton == theAnswer.text {
            score++
            println("Correct")}
    }
}

答案 1 :(得分:0)

 @IBAction func CheckifATrue(sender: AnyObject) {
    let sender = sender as! UIButton
    if let thisbutton = sender.titleLabel?.text {
      if thisbutton == theAnswer.text {
        score++
        println("Correct")}
    }
  }

答案 2 :(得分:0)

谢谢大家! 这实际上是两者兼而有之。我需要将其更改为UIButton,然后将thisbutton =设置为sender.titleLabel,然后将ifbutmenet与thebutwer.text进行比较。发布解决方案,以防其他人在将来遇到此问题

@IBAction func checkifCTrue(sender: UIButton){
    if let thisbutton = sender.titleLabel {
    if thisbutton.text == secretAnsarrrrr.text {
    score++
    println("Correct")}
    }}