在Swift中是isMemberOfClass

时间:2016-09-06 11:23:40

标签: ios swift

关键字is相当于isKindOfClass

但我无法在swift中找到等同于isMemberOfClass的内容。

注意: 我的问题不是关于isKindOfClassisMemberofclass之间的区别,而是问题是关于什么是Swift中isMemberofClass的等价物

有人请澄清

2 个答案:

答案 0 :(得分:13)

您正在寻找type(of:)(之前在Swift 2中.dynamicType)。

示例:

class Animal {}
class Dog : Animal {}
class Cat : Animal {}

let c = Cat()

c is Dog // false
c is Cat // true
c is Animal // true

// In Swift 3:
type(of: c) == Cat.self // true
type(of: c) == Animal.self // false

// In Swift 2:
c.dynamicType == Cat.self // true
c.dynamicType == Animal.self // false

答案 1 :(得分:1)

如果可选变量type(of:)从初始化返回类型。

示例:

class Animal {}
class Cat : Animal {}

var c: Animal?
c = Cat()

type(of: c) // _expr_63.Animal>.Type
type(of: c) == Cat?.self // false
type(of: c) == Animal?.self // true

我的班级继承自NSObject,所以我使用了它的变量classForCoder,它对我有用。

class Animal : NSObject {}
class Cat : Animal {}

var c: Animal?
c = Cat()
c?.classForCoder == Cat.self // true