基于类的匹配 - 非常适合 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
  }
}