Swift类型判断

关键词:Swift类型判断, is, isKindof, isMemberof, typeof

类型判断

is

用于任意类型判断,可以是数值类型,也可以是对象。用于对象时,类似isKindof

let name = 1234
if name is Int {
    print("用is判断类型Int")
}

let dog = Dog()
if dog is Dog {
    print("用is判断同类")
}

isKindof

只能用于判断对象,类型必须是 AnyObject。

判断是同类,或者是其子类。

let dog1: AnyObject = Dog()
if dog1.isKind(of: Dog.self) {
    print("用isKind判断同类")
}
if dog1.isKind(of: Animal.self) {
    print("用isKind判断父类")
}

isMemberof

只判断同类,如果是其子类,会返回false。

let dog2: AnyObject = Dog()
if dog2.isMember(of: Dog.self) {
    print("用isMember判断同类")
}
if dog2.isMember(of: Animal.self) {
    print("用isMember判断父类,这里不会执行")
}

typeof

只判断同类,如果是其子类,会返回false。

let dog3 = Dog()
if type(of: dog3) == Dog.self {
    print("用typeof判断同类")
}
if type(of: dog3) == Animal.self {
    print("用typeof判断父类,这里不会执行")
}