当 XCode 自动完成 Swift 属性作为"object.?.propertyName"是什么意思?



我对Swift中可选类型的工作方式有一个基本的了解,但我很困惑,为什么XCode在定义为

时自动完成我的可选属性
class Test {
    var _pageViewController: UIPageViewController? = nil
    override func viewDidLoad() {
        super.viewDidLoad()
        _pageViewController.?.setViewControllers(...)
        // auto completes in xcode to _pageViewController.?.setViewControllers
        ...

我很困惑,'的目的是什么?可选类型上的属性/方法是for?据我所知,它似乎没有任何用途?

这两个点确实是一个bug。在这种情况下,Swift中?的目的是同时测试和展开你的可选变量。这和以下操作是一样的:

if let unwrappedPageViewController = _pageViewController {
    unwrappedPageViewController.setViewControllers(...)
}

这意味着:如果变量_pageViewController不是nil,将其展开并对其应用后续操作。

希望有帮助,

相关内容

最新更新