nil-coalescing运算符“ ??”的作用是什么?在可选链中?

时间:2019-08-14 15:22:24

标签: swift syntax operators

我不明白什么?运算符在此片段的第二行中执行:

    func presentingControllerFrameWithContext(_ transitionContext: AnyObject) -> CGRect {
        let frame = transitionContext.containerView??.bounds
        // more code
    }

我是Swift的新手,必须维护/扩展现有代码。我使用了很多资源,但找不到这种用法的解释。我认为我理解的运算符如下:
https://docs.swift.org/swift-book/LanguageGuide/BasicOperators.html#ID72

正如这篇文章的标题所述,我认为这是可选链接的一种特殊情况,如下所述:
https://docs.swift.org/swift-book/LanguageGuide/OptionalChaining.html#ID246

但是我找不到??的任何用法?在那里,也许我的假设是完全错误的...

我希望这里的人能给我一个解释或提示,以寻找答案。

1 个答案:

答案 0 :(得分:2)

这不是您看到的nil-coalescing运算符。 nil-coalescing运算符是二进制运算符,需要将其置于Optional值和非Optional一个或两个Optional值之间。在您的代码示例中,事实显然并非如此。

您看到的是嵌套可选上的可选链接。

let nestedOptional: Int?? = nil

nestedOptional??.description

您可以创建Optional值,其包装值也是Optional,在这种情况下,您需要一个一个地解开每个可选层。