隐式解包可选

时间:2018-05-22 12:17:09

标签: swift

我正在使用playground来运行以下代码

var a : Int!
a = nil
print(a) o/p - none
print(a!) o/p - crash

a = 5
print(a) o/p - some(5)
print(a!) o/p - 5 

我知道选项是枚举,它有两种类型无或一些。 但是当我宣布a被隐式解开时,我想我不需要打开它来获取实际数据。 我是否理解选项错误?

2 个答案:

答案 0 :(得分:1)

正如其他人所说,IUO(隐式解包的选项)现在是常规的选项,对编译器有一些提示,允许它解包它们。

话虽如此,打印的处理方式也不同。请尝试使用非可选变量的赋值。这是一个更好的测试,例如:

var a : Int! = nil
let b: Int = a

答案 1 :(得分:0)

这是隐式解包的选项的用例。在任何类中,必须在初始化类实例时初始化所有属性。您可以为属性分配默认值,也可以使用init函数进行属性初始化。

但是,在视图控制器中,您不想使用init功能。某些属性可能没有默认值,而是在viewDidLoad期间初始化。在这种情况下,您可以将属性声明为隐式解包,因为在视图控制器加载之前不会访问该属性 - 之后您可以在viewDidLoad(或在调用视图控制器的prepareForSegue方法中确保,例如,它不是零,因此从现在开始可以安全访问。

加上你对IUO的理解只是我的两分钱。