Ios Swift在展开可选值时意外发现nil

Ios Swift在展开可选值时意外发现nil,ios,swift,Ios,Swift,我正在关注斯坦福大学关于iOS 8开发的课程。我对我的代码有一些问题。这是我的全部密码 import UIKit class ViewController: UIViewController { @IBOutlet weak var display: UILabel! var userIsEnterADigit = false @IBAction func appendDigit(sender: UIButton) { let digit = send

我正在关注斯坦福大学关于iOS 8开发的课程。我对我的代码有一些问题。这是我的全部密码

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var display: UILabel!
    var userIsEnterADigit = false
    @IBAction func appendDigit(sender: UIButton) {
        let digit = sender.currentTitle!
        if userIsEnterADigit{
            display.text = display.text! + digit
        }else{
            display.text = digit;
            userIsEnterADigit = true
        }
    }
    var operandStack = Array<Double>()

    @IBAction func enter() {
        userIsEnterADigit = false
        operandStack.append(displayValue)
        print("operandStack = \(operandStack)")
    }


    var displayValue :Double {

        get{
            return NSNumberFormatter().numberFromString(display.text!)!.doubleValue
        }
        set{
            display.text = "\(newValue)"
            userIsEnterADigit = false
        }
    }
}
有错误:

在展开可选值时意外发现nil

我用视频检查代码,没有找到原因。有人能告诉我为什么吗

并帮助我理解
display.text=“\(newValue)”
中的
newValue
。(为什么会这样?这是swift的语法吗?

  • !!表示“此变量在此阶段不应为nil。如果为,则为throw”。很可能您的文本无法转换为数字,而将其解析为1的函数具有!所以它抛出
  • 你的第二个问题确实是一个“新语法”。这是一种简洁的方法,可以创建字符串,而不必使用带有转义符和变量列表的老式格式

它的可能副本看起来您应该阅读以开始它。我认为问题可能更多地是关于变量
newValue
的来源,因为它似乎没有在代码中的任何地方定义。我不相信
戴王炯
已经足够密切地遵循了教程
return NSNumberFormatter().numberFromString(display.text!)!.doubleValue