RajuBhai Rocker
RajuBhai Rocker

Reputation: 743

isMemberOfClass in Swift

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

Upvotes: 11

Views: 3292

Answers (2)

Grimxn
Grimxn

Reputation: 22487

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

Upvotes: 19

Tim Velichko
Tim Velichko

Reputation: 21

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

Upvotes: 2

Related Questions