表达式类型“@lvalue 字符串?”当 += 到 UILabel.text 时,在没有更多上下文的情况下是模棱两可的
Expression type '@lvalue String?' is ambiguous without more context when += to UILabel.text
当有人点击标有 7 的按钮时,我试图将字符串“7”添加到标签中。
但是当使用 += "7" 时,它给我错误 "Expression type '@lvalue String?' is ambiguous without more context",当使用 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
}
}
text
属性 是可选的。安全地做到这一点:
valueLabel.text = (valueLabel.text ?? "") + "7"
text
属性是可选的。安全地执行此操作的一种方法是使用 append
以及 可选链接 :
valueLabel.text?.append("7")
或将 +=
与 可选链接一起使用 :
valueLabel.text? += "7"
如果标签是 nil
,这些将安全地不做任何事情。如果您希望标签为 "7"
如果它是 nil
,则使用 .
当有人点击标有 7 的按钮时,我试图将字符串“7”添加到标签中。
但是当使用 += "7" 时,它给我错误 "Expression type '@lvalue String?' is ambiguous without more context",当使用 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
}
}
text
属性 是可选的。安全地做到这一点:
valueLabel.text = (valueLabel.text ?? "") + "7"
text
属性是可选的。安全地执行此操作的一种方法是使用 append
以及 可选链接 :
valueLabel.text?.append("7")
或将 +=
与 可选链接一起使用 :
valueLabel.text? += "7"
如果标签是 nil
,这些将安全地不做任何事情。如果您希望标签为 "7"
如果它是 nil
,则使用