基于类的匹配 - 非常适合 prepareForSegue
你还可以根据要打开的事物的类来进行 switch 语句切换。
这是有用的一个例子是 prepareForSegue
。我曾经根据 segue 标识符进行切换,但这很脆弱。如果你稍后更改故事板并重命名 segue 标识符,则会破坏你的代码。或者,如果你使用 segues 到多个实例相同的视图控制器类(但不同的故事板场景),那么你不能使用 segue 标识符来确定目标的类。
Swift switch 语句来救援。
使用 Swift case let var as Class
语法,如下所示:
Version < 3.0
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
switch segue.destinationViewController {
case let fooViewController as FooViewController:
fooViewController.delegate = self
case let barViewController as BarViewController:
barViewController.data = data
default:
break
}
}
Version >= 3.0
在 Swift 3 中,sytax 略有变化:
override func prepare(for segue: UIStoryboardSegue, sender: AnyObject?) {
switch segue.destinationViewController {
case let fooViewController as FooViewController:
fooViewController.delegate = self
case let barViewController as BarViewController:
barViewController.data = data
default:
break
}
}