如何存储 class 引用并将其与 swift 中的实例进行比较?

How to store a class reference and compare it with an instance in swift?

我想存储一个类型的引用,以便稍后将其与对象进行比较。

我试过:

let myClassRef = AClass.self // store a reference to the type of AClass
if myObject is myClassRef {
    // Do something
}

但这就是行不通。如何使用 AnyClass 对象? 或者,如何从实例中获取 AnyClass 对象(这产生与我期望的相同的结果)

创建 NSObjectAclass 子类并使用 isMemberOfClass()

let myClassRef = AClass.self // store a reference to the type of AClass

if myObject.isKindOfClass(myClassRef) {
// Do something
}

为了避免子类化 NSObject,您可以使用 dynamicType

let myClassRef = AClass.self

if myObject.dynamicType === myClassRef {
    // ...
}

不需要subclass NSObject.

如果 myObject 是类型 AnyObject,您可以这样做:

import Foundation

let myClassRef = AClass.self
let myObject : AnyObject = BClass()
if myObject.isKindOfClass(myClassRef) {
    // Do something
}

如果myObject是特定的class或接口类型,您可以先将其转换为AnyObject

import Foundation

let myClassRef = AClass.self
let myObject = BClass()
if (myObject as AnyObject).isKindOfClass(myClassRef) {
    // Do something
}