当有人点击标记为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
}
}
答案 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。