如何在可选的可选项上执行可选绑定?

时间:2015-08-06 11:59:19

标签: swift optional optional-binding

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

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

方法#1

if let navigationController = viewController.navigationController! {

}

方法#2

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

    }
}

4 个答案:

答案 0 :(得分:1)

还有另一种解决方案:

<!DOCTYPE html>
<html>

<style>
.red {color:red;}
</style>
<body>

<div id="template">
    <div class="row">
        <div class="col-xs-3 no">ddd</div>
        <div class="col-xs-6 no2">ddd</div>
        <div class="col-xs-3 quantity">dddd</div>
    </div>
</div>

<div id="target"></div>
<button onclick="myFunction()">Try it</button>

<script>
function myFunction() {
var t = document.querySelector('#template');

var clonex = document.importNode(t, true);

document.querySelector('#target').appendChild(clonex);
clonex.classList.add("red");
}
</script>

</body>
</html>

答案 1 :(得分:0)

if let navigationController = viewController?.navigationController

答案 2 :(得分:0)

更多功能编程解决方案:

if let a = optionalOfOptional?.map({$0}) {
    println(a)
}

答案 3 :(得分:0)

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

var navigationController : UINavigationController!

并将viewDidLoad()中的导航控制器指定为隐式展开的可选

navigationController = viewController!.navigationController!

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