我对可选类型在 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/