UILabel 变量需要是一个 Optional Double 但我不希望标签显示 optional(valueOfNumber)

UILabel variable needs to be an Optional Double but I don't want the the label to display optional(valueOfNumber)

我正在尝试独立完成 CS193P 课程。我正在完成课程的作业 2,作业的一部分要求我执行以下操作:

"Change the computed instance variable displayValue to be an Optional Double rather than a Double"

我能够将 displayValue 更改为可选双精度值,但现在显示 displayValue 的 UILabel 现在将显示可选值而不是双精度值(这是有道理的)。

示例:

5(然后按回车键)将在 UILabel 中显示 Optional(5.0) 的值。

这是我尝试过的:

我确定 resultdisplayValue! 将 return 加倍。

我尝试将 display.text = result 更改为 display!.text! = result,但这并没有解决问题。

这是我的代码片段,我认为您不应该再需要了,但如果您认为我应该展示其他内容,请发表评论!

P.S。显示的名称是 display

@IBAction func enter() {
    if let result = brain.pushOperand(displayValue!) {
        displayValue = result
    } else {
        displayValue = 0
    }
}

var displayValue: Double? {
    get {
        return NSNumberFormatter().numberFromString(display.text!)!.doubleValue
    }
    set{
        display!.text! = "\(newValue)"     //display is the UILabel
    }

我认为显示应该是空白的,例如,无法评估堆栈以给出结果。

所以你可以使用

var displayValue: Double? {
    get { return NSNumberFormatter().numberFromString(display.text!)?.doubleValue }
    set { if newValue != nil { display.text = "\(newValue!)" }
            else { display.text = " " }
    }
}

然后 "enter"

@IBAction func enter() {
    if let dV = displayValue {
        brain.pushOperand(dV)
        displayValue = brain.evaluate()
    }
    userIsInTheMiddleOfTypingANumber = false
}

这个解决方案对我有用。我也在独立学习这门课程。这很棘手,我不得不听很多次讲座:-)

杰基