ios - XCode 将 Swift 属性自动补全为 "object.?.propertyName"是什么意思?

标签 ios swift

我对可选类型在 Swift 中的工作方式有基本的了解,但我很困惑为什么 XCode 在定义为可选属性时自动完成我的可选属性

class Test {

    var _pageViewController: UIPageViewController? = nil

    override func viewDidLoad() {
        super.viewDidLoad()
        _pageViewController.?.setViewControllers(...)
        // auto completes in xcode to _pageViewController.?.setViewControllers
        ...

我很困惑“?”的目的是什么?可选类型的属性/方法是为了什么?据我所知,它似乎真的没有任何作用?

最佳答案

这两个点确实是一个错误。在这种情况下,Swift 中 ? 的目的是同时测试和解包您的可选变量。这与做同样的事情:

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

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

希望对你有帮助

关于ios - XCode 将 Swift 属性自动补全为 "object.?.propertyName"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24103814/

相关文章:

ios - 在后台的 tableView 中附加数据 - iOS

swift - 从不同的 ViewController 中删除 NSNotification Observer

ios - 将 uiview 渲染到 uiimage 的问题

objective-c - 在表格 View 中显示特定大小的两个部分

ios - 自动布局问题 : iOS 7 vs iOS8

ios - 实现带有粘性(水平滚动)标题并具有滚动放大效果的 ScrollView 的正确方法是什么?

iphone - UISearchDisplayController "No Results"文本

ios - 在 Storyboard 上工作时 Storyboard UI 不更新

ios - 为什么在 Swift 上显示警报时需要 DispatchQueue?

javascript - iScroll 使其他 onclick 在 iOS 上停止工作