我有一组viewController类名,如(ViewController class 1,2,3 4)
let classArray = [VCclass1, VCclass2, VCclass3, VCclass4]
我想检查对象属于类数组中提到的任何类,如
if obj.isKind(of:(Any of the classArray elements) ) {
//do something
} else {
//execute else condition
}
如何在这里写“if condition”?
答案 0 :(得分:2)
好吧,您正在根据obj
的类型查看您的数组是否包含成员。所以,contains(where:)
非常合适:
if classes.contains(where: { type(of: obj) == $0 }) {
//do something
} else {
//execute else condition
}
答案 1 :(得分:2)
您可以通过简单的方式验证。
import Foundation
import UIKit
class A: UIViewController {}
class B: UIViewController {}
class C: UIViewController {}
let array:[UIViewController.Type] = [A.self,B.self,C.self]
let obj = A()
print(array.contains(where: { obj.isKind(of: $0) }))
输出应为true
。您可以在Playground中运行此代码
但是我会为此目的推荐switch
。在更复杂的场景中,您将想知道哪个类被赋予对象左右。
switch obj {
case is A:
print("A")
case is B:
print("B")
case is C:
print("C")
default:
print("none")
}
答案 2 :(得分:0)
试试这个:
<option value="Something">Something<option>
或丑陋的,少OOP方式......
extension NSObject {
func isKind(of classes: [AnyClass]) -> Bool {
for aClass in classes {
if self.isKind(of: aClass) {
return true
}
}
return false
}
}
let classes = [UIViewController.self]
let obj = UIViewController()
if (obj.isKind(of: classes)) {
//do something
}