在解开Optional值时,Swift意外地发现了nil

时间:2016-03-05 09:02:14

标签: ios swift

我正在关注有关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
        }
    }
}

我不知道为什么xcode指向

return NSNumberFormatter().numberFromString(display.text!)!.doubleValue

有错误:

  

在解包可选值时意外发现nil

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

帮助我理解newValue中的display.text = "\(newValue)"。 (为什么它会像这样?这是一个快速的语法吗?)

1 个答案:

答案 0 :(得分:1)

  • !意味着&#34;这个变量在这个阶段不应该是零。如果是的话,扔掉。&#34;很可能你的文字不能变成一个数字,而将它解析为一个的函数有一个!所以它会抛出。
  • 你的第二个问题确实是一个新的语法&#34;。它是一种简洁的方法来创建字符串,而无需使用旧式的格式 - with-escapes-and-list-of-variables。