如果我需要执行一个多个参数'原始源是可选的方法,那么在执行该方法之前是否进行多个可选绑定是最简洁的方法呢?
e.g。 UIStoryboardSegue的sourceViewController和destionationViewController都是AnyObject?我需要使用source的navigationController来执行某些操作。
override func perform() {
var svc = self.sourceViewController as? UIViewController
var dvc = self.destinationViewController as? UIViewController
if let svc = svc, dvc = dvc {
svc.navigationController?.pushViewController(dvc, animated: true)
}
}
答案 0 :(得分:0)
如果视图控制器是Interface Builder中设计的segue的一部分,并且您实际上知道它们不是nil,则可以解包它们
nil
否则,如果源控制器可能为nil,则仅在控制器不为nil时才执行push命令,这就像在Objective-C中向override func perform() {
var svc = self.sourceViewController as? UIViewController
var dvc = self.destinationViewController as? UIViewController
svc.navigationController?.pushViewController(dvc, animated: true)
}
发送消息
instance = ec2.instances.create(
:image_id => 'ami-11d68a54',
:instance_type => 'm1.small',
:count => 1,
:security_groups => 'YOUR_SECURITY_GROUP_NAME',
:key_pair => ec2.key_pairs['YOUR_KEY_PAIR_NAME'])
答案 1 :(得分:0)
似乎没有必要创建两个变量,如果你真的想确保可选的值不是nil你可以使用:
override func perform() {
if let svc = self.sourceViewController as? UIViewController,
dvc = self.destinationViewController as? UIViewController {
svc.navigationController?.pushViewController(dvc, animated: true)
}
}