isMemberOfClass in Swift

i0S Swift Issue

Question or problem in the Swift programming language:

The keyword is is equivalent to isKindOfClass.

But I am unable to find what is equivalent of isMemberOfClass in swift.

Note:
My question is not about the difference between isKindOfClass or isMemberofclass rather the question is about what is the equivalent of isMemberofClass in Swift

somebody please clarify

How to solve the problem:

Solution 1:

You are looking for type(of:) (previously .dynamicType in Swift 2).

Example:

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

Solution 2:

In case of optional variable type(of:) returns the type from initialization.

Example:

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

My class was inherited from NSObject, so I used its variable classForCoder and it worked for me.

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

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

Hope this helps!