目前在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
}
...
答案 0 :(得分:1)
如果我从逻辑上考虑它,为它们定义超类/协议会更有意义,如下所示:
class MyClassNumber { }
class MyClassOne: MyClassNumber { }
class MyClassTwo: MyClassNumber { }
class MyClassLetter { }
let one = MyClassOne()
let two = MyClassTwo()
let letter = MyClassLetter()
if one is MyClassNumber {
// TRUE
}
if two is MyClassNumber {
// TRUE
}
if letter is MyClassLetter {
// FALSE
}
请勿查看您的任何用例
答案 1 :(得分:0)
根据您的评论,您似乎需要检查anyInstance
是否来自UIViewController
列表,然后您不想致电dismiss()
:
没有任何方法可以将数组传递为:
if anyInstance is (MyClassOne, MyClassTwo, MyClassThree) {
return
}
但是,您可以使用switch语句执行此操作:
假设
anyInstance
是您的类对象
switch anyInstance {
case is MyClassOne, is MyClassTwo ,is MyClassThree:
print("one is either from MyClassOne, MyClassTwo, MyClassThree")
default:
break
}