【问题标题】:Expression type '@lvalue String?' is ambiguous without more context when += to UILabel.text表达式类型“@lvalue 字符串?”当 += 到 UILabel.text 时,没有更多上下文是模棱两可的
【发布时间】: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 是什么,你想要执行一些操作,否则
  • 您只需要在加起来之前解开可选值。只需确保 UILabel text 属性在增加其值之前不为零:valueLabel.text! += "7"
  • 值得一提的是,您不应该使用 UI 来传递值。如果您需要标签字符串值以供将来使用,您应该保留对其值的引用。

标签: ios swift uilabel


【解决方案1】:

text 属性是可选的。为了安全地做到这一点:

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

【讨论】:

    【解决方案2】:

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

    valueLabel.text?.append("7")
    

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

    valueLabel.text? += "7"
    

    如果标签是nil,这些将安全地什么都不做。如果您希望标签为"7",如果它是nil,则使用@RickyMo's solution

    【讨论】:

    • 如何使用 foodQuantity 值计算我的 foodPrice 标签值? var quantity = 1foodPrice.text *= quantity。我得到同样的错误
    • @EmreDeğirmenci,您需要将foodPrice.text 中的String 转换为Double,将其乘以Double(quantity),然后将Double 转换回a String。类似let price = Double(foodPrice.text ?? "") ?? 0; let total = price * Double(quantity); foodPrice.text = "\(total)"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-29
    • 1970-01-01
    • 2017-04-15
    • 2016-12-10
    • 1970-01-01
    相关资源
    最近更新 更多