基於類的匹配 - 非常適合 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
}
}