Swift的奇怪行为

时间:2016-05-05 13:07:34

标签: swift

在玩Swift时,我遇到了以下情况:

let testVar: String = "random string"
var myVar: Int! = 0
myVar = Int(testVar)
print("myVar = \(myVar)")

输出: -

  

myVar = nil

由于我在!之前使用了myVar标记,它是否应该始终包含非零值? myVar nil怎么样?{1}} 这是我的游乐场代码的截图:

Screenshot

2 个答案:

答案 0 :(得分:1)

'!'表示强制解包可选项。但是它的类型仍然是可选的,因此可以是零。

(你只是告诉编译器你保证不会变为零。)

像......一样的行

let v: Int = myVar

...在您的代码结束时,您将获得预期的崩溃。

另一个例子是出口的处理方式。它们通常定义如下:

@IBOutlet weak var detailDescriptionLabel: UILabel!

在调用viewDidLoad之前,它是零。再次,'!'只是对编译器的承诺,它在包含有效引用之前不会被使用。

答案 1 :(得分:0)

我认为,当您testVarint时,您将string转换为myVar。由于<div class='question'>被打开,因此可能默认为nil