如何在swift中使用AS来获取类类型

Ita*_*vka 8 casting object switch-statement control-flow swift

我有一个数组,SomeClass其中包括各种其他类的超类.
该数组中包含所有这些随机类.
有没有办法使用开关(相对于else if let something = elm as? TheSubClassType)

在伪代码中:

for AObjectOfTypeSomeClass in MyBigArray{
  switch the_type_of(AObjectOfTypeSomeClass){
    case SubClass1:
        let O = AObjectOfTypeSomeClass as! SubClass1
    ...
    ...
    ...
  }
}
Run Code Online (Sandbox Code Playgroud)

Mr *_*ley 23

你很亲密

for objectOfSomeClass in MyBigArray {
    switch objectOfSomeClass {
    case let subClass as SubClass1:
        // Do what you want with subClass
    default:
        // Object isn't the subclass do something else
    }
}
Run Code Online (Sandbox Code Playgroud)

这个网站有我发现的模式匹配的最佳纲要. http://appventure.me/2015/08/20/swift-pattern-matching-in-detail/

  • as 不是可选的,因为您是模式匹配,而不是绑定。绑定看起来像这样,并且需要可选的强制转换: if let subClass = anObject as? 子类{}。我承认这有点违反直觉,因为它们都实现了相似的目标。 (2认同)