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

时间:2015-06-10 05:07:18

标签: swift introspection

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

我试着这样做:

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

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

3 个答案:

答案 0 :(得分:2)

为避免必须继承NSObject,您可以使用dynamicType

let myClassRef = AClass.self

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

答案 1 :(得分:1)

制作Aclass的{​​{1}}子类使用NSObject

isMemberOfClass()

答案 2 :(得分:0)

它不需要继承NSObject

如果myObjectAnyObject类型,您可以这样做:

import Foundation

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

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

import Foundation

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