关键字is
相当于isKindOfClass
。
但我无法在swift中找到等同于isMemberOfClass
的内容。
注意:
我的问题不是关于isKindOfClass
或isMemberofclass
之间的区别,而是问题是关于什么是Swift中isMemberofClass
的等价物
答案 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