我正在以两种不同的方式定义然后初始化一个可选的 CGSize 类型值,我希望在这两种情况下我都应该有一个可选的大小,但奇怪的是,即使在输入宽度和高度之后,在方式 1 中,该值也是还是零!我在这里遗漏了什么吗?
var value1: CGSize? = nil
value1?.width = 100.0
value1?.height = 100.0
print(value1) // print: nil
var value2: CGSize? = nil
value2 = CGSize(width: 100.0, height: 100.0)
print(value2) // print: Optional((100.0, 100.0))
答案 0 :(得分:2)
它完全按照你的要求去做。
您从未初始化值 1,因此您的可选链接失败。
如果你想设置宽度和高度并获得一个 CGSize,你需要初始化它然后设置它的值:
var value3: CGSize? = nil
value3 = CGSize()
value3?.width = 100.0
value3?.height = 100.0
print(value3) //Optional((100.0, 100.0))
答案 1 :(得分:1)
让我们回顾一下第一个例子:
var value1: CGSize? = nil
好的,所以 value1
当前为零。
value1?.width = 100.0
您对 ?
执行的操作称为 optional chaining。这使得如果 value1
是 not nil,则将 width
设置为 100。
但是 value1
仍然为零。
value1?.height = 100.0
这里也一样。它仍然为零,所以它也没有设置 height
。
print(value1)
value1
仍然为零,因此打印 nil
。