繁体   English   中英

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

[英]What is the existence operator in Swift?

在目标C中,这是有效的代码行

self.scrollView.contentSize = self.image ? self.image.size : CGSizeZero;

这是检查self.image是否为nil,然后选择left或right值。 在Swift中,我想重新创建同一行代码。 实际上,除了没有分号,应该完全一样

self.scrollView.contentSize = self.image ? self.image.size : CGSizeZero

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

什么是正确的Swift代码?

如果self.image是可选的,则此代码有效。 否则就没有理由,因为self.image的字面值不能为零。

以下代码是完全有效的:

var image : UIImage?
self.scrollView.contentSize = image ? image!.size : CGSizeZero

注意:您必须使用“!” “打开”可选变量image以便您可以访问其size 这是安全的,因为您只是事先测试了它不是零。

如果image是一个隐式展开的可选内容,这也将起作用:

var image : UIImage!
self.scrollView.contentSize = image ? image.size : CGSizeZero

您正在描述条件赋值三元运算符?: ,其操作方式如下:

(condition) ? (assign this value if the condition evaluates to true) : (assign this value if the condition evaluates to false)

因此, self.image必须是计算为truefalse ,在Swift中就是这样的,它符合LogicValue协议

与Obj-C仅仅一个对象的存在等同于true ,Swift需要更多...我们被赋予了可选值,可以用作条件值!

因此,如果self.image是可选值,那么您描述的内容就可以工作,如果您看到该错误,听起来好像不是

完善答案:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM