【发布时间】:2018-05-01 10:05:09
【问题描述】:
目前在 swift 中,我们可以使用 'is' 运算符来检查实例的类类型。 例如:
....
guard anyInstance is MYClass else {
return
}
....
就我而言,我需要将同一个实例与多个类类型进行比较, 例如:
...
if anyInstance is MyClassOne ||
anyInstance is MyClassTwo || anyInstance is MyClassThree {
return
}
...
有没有更好的方法来快速编写这种条件?像
....
if anyInstance is (MyClassOne, MyClassTwo, MyClassThree) {
return
}
...
【问题讨论】:
-
你为什么要检查它?知道一个对象是否是三个可能类之一的实例有什么帮助?为了调用对象上的任何特定方法,无论如何您都必须(有条件地)强制转换它。 – 也许您想定义一个公共超类或这些类所遵循的协议?
-
你可以在 switch 语句中使用
case is MyClass,但是@MartinR 建议使用一个通用的超类是好的。 -
嗨,马丁,感谢您的回复。就我而言,“anyInstance”属于 UIViewController 类型,如果“anyInstance”属于 MyClass* 类型,我不想调用 dismiss() 方法。
-
如果
anyInstance应该是UIViewController为什么不检查... is UIViewController而不是is not A || is not B || is not C??