我不明白什么?运算符在此片段的第二行中执行:
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
但是我找不到??的任何用法?在那里,也许我的假设是完全错误的...
我希望这里的人能给我一个解释或提示,以寻找答案。
答案 0 :(得分:2)
这不是您看到的nil-coalescing运算符。 nil-coalescing运算符是二进制运算符,需要将其置于Optional值和非Optional一个或两个Optional值之间。在您的代码示例中,事实显然并非如此。
您看到的是嵌套可选上的可选链接。
let nestedOptional: Int?? = nil
nestedOptional??.description
您可以创建Optional值,其包装值也是Optional,在这种情况下,您需要一个一个地解开每个可选层。