我正在使用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
被隐式解开时,我想我不需要打开它来获取实际数据。
我是否理解选项错误?
答案 0 :(得分:1)
正如其他人所说,IUO(隐式解包的选项)现在是常规的选项,对编译器有一些提示,允许它解包它们。
话虽如此,打印的处理方式也不同。请尝试使用非可选变量的赋值。这是一个更好的测试,例如:
var a : Int! = nil
let b: Int = a
答案 1 :(得分:0)
这是隐式解包的选项的用例。在任何类中,必须在初始化类实例时初始化所有属性。您可以为属性分配默认值,也可以使用init
函数进行属性初始化。
但是,在视图控制器中,您不想使用init
功能。某些属性可能没有默认值,而是在viewDidLoad
期间初始化。在这种情况下,您可以将属性声明为隐式解包,因为在视图控制器加载之前不会访问该属性 - 之后您可以在viewDidLoad
(或在调用视图控制器的prepareForSegue
方法中确保,例如,它不是零,因此从现在开始可以安全访问。
加上你对IUO的理解只是我的两分钱。