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) 的值。
这是我尝试过的:
我确定 result
和 displayValue!
将 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
}
这个解决方案对我有用。我也在独立学习这门课程。这很棘手,我不得不听很多次讲座:-)
杰基
我正在尝试独立完成 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) 的值。
这是我尝试过的:
我确定 result
和 displayValue!
将 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
}
这个解决方案对我有用。我也在独立学习这门课程。这很棘手,我不得不听很多次讲座:-)
杰基