1

你如何对可选的可选进行可选绑定?

例如,假设 UIViewController 的 navigationController 属性是可选的。我应该使用方法#1 还是方法#2,还是有第三种方法?

方法#1

if let navigationController = viewController.navigationController! {

}

或者

方法#2

if let optionalNavigationController = viewController.navigationController {
   let navigationController = optionalNavigationController {

    }
}
4

4 回答 4

1

还有另一种解决方案:

if let stillOptional = viewController.navigationController, let notOptional = stillOptional {
    //use notOptional here
}
于 2015-08-06T12:04:38.387 回答
0
if let navigationController = viewController?.navigationController
于 2015-08-06T12:05:28.073 回答
0

如果您知道视图控制器有一个导航控制器,因为您在 Interface Builder 中设计了它或以编程方式创建了它,请声明一个变量

var navigationController : UINavigationController!

并将导航控制器分配viewDidLoad()为隐式展开可选

navigationController = viewController!.navigationController!

如果您不知道,请使用其他答案中所述的普通可选绑定

于 2015-08-06T12:11:28.437 回答
0

更多功能编程解决方案:

if let a = optionalOfOptional?.map({$0}) {
    println(a)
}
于 2015-08-06T12:08:42.597 回答