【发布时间】:2019-03-08 04:16:53
【问题描述】:
当有人点击标记为 7 的按钮时,我正在尝试将字符串“7”添加到标签中。
但是当使用 += "7" 时,它给了我错误 "Expression type '@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
}
}
【问题讨论】:
-
你期望的 OP 是什么,你想要执行一些操作,否则
-
您只需要在加起来之前解开可选值。只需确保
UILabeltext属性在增加其值之前不为零:valueLabel.text! += "7" -
值得一提的是,您不应该使用 UI 来传递值。如果您需要标签字符串值以供将来使用,您应该保留对其值的引用。