表达式类型“ @lvalue字符串?”当+ =到UILabel.text时,没有更多上下文是模棱两可的

时间:2019-03-08 04:16:53

标签: ios swift uilabel

当有人点击标记为7的按钮时,我正在尝试将字符串“ 7”添加到标签中。

但是当使用+ =“ 7”时,它给我错误“表达式类型'@lvalue String?'。在没有更多上下文的情况下是模棱两可的”,当使用operator =“ 7”时,效果很好。为什么+ =“ 7”不起作用?

class NumberPadController: UIViewController {
    @IBOutlet weak var valueLabel: UILabel!

    /// set value in main vc and return to that.
    @IBAction func doneEntering(_ sender: Any) {
        guard let valueString = valueLabel.text, let valueDouble = Double(valueString), let presentingVC = self.presentingViewController as? ViewController else {
            // FIXME: Show error
            dismiss(animated: true, completion: nil)
            return
        }

        presentingVC.valuePassedFromNumPad = valueDouble
        dismiss(animated: true, completion: nil)
    }

    @IBAction func seven(_ sender: Any) {
        valueLabel.text += "7" // Expression type '@lvalue String?' is ambiguous without more context
        valueLabel.text = "a" // works fine
    }
}

2 个答案:

答案 0 :(得分:4)

text属性是可选的。为安全起见:

valueLabel.text =  (valueLabel.text ?? "") + "7"

答案 1 :(得分:3)

text属性是可选。安全地执行此操作的一种方法是将append可选链接一起使用:

valueLabel.text?.append("7")

或将+=可选链接一起使用:

valueLabel.text? += "7"

如果标签为nil,则这些标签将毫无作用。如果您希望标签为"7" nil,请使用@RickyMo's solution