Swift中的存在运算符是什么?

Nea*_*int 2 ios swift xcode6

在Objective C中,这是一行有效的代码

self.scrollView.contentSize = self.image ? self.image.size : CGSizeZero;
Run Code Online (Sandbox Code Playgroud)

这是检查self.image是否为零,并选择左或右值.在Swift中,我想重新创建相同的代码行.实际上它应该完全相同,除非没有分号

self.scrollView.contentSize = self.image ? self.image.size : CGSizeZero
Run Code Online (Sandbox Code Playgroud)

但是这在我的Swift代码中出现错误是无效的,'UIImage不符合协议LogicValue'

什么是正确的Swift代码?

dre*_*wag 5

如果self.image是Optional,则此代码有效.没有理由不这样做因为self.image字面上不能为零.

以下代码完全有效:

var image : UIImage?
self.scrollView.contentSize = image ? image!.size : CGSizeZero
Run Code Online (Sandbox Code Playgroud)

注意:你必须使用"!" "解包"可选变量,image以便您可以访问它size.这是安全的,因为你只是在手前测试它不是零.

如果图像是一个隐式解包的可选项,这也可以工作:

var image : UIImage!
self.scrollView.contentSize = image ? image.size : CGSizeZero
Run Code Online (Sandbox Code Playgroud)