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