Swift判断对象属于什么类型
1.Objective-C 中常⽤的判断⼀个对象是属于哪个类的⽅法有下⾯两类:
[obj1 isKindOfClass:[ClassA class]];
[obj2 isMemberOfClass:[ClassB class]];
结论:
-isKindOfClass:判断obj1是否是ClassA或者其⼦类的实例对象;
-isMemberOfClass:对obj2做出判断,当且仅当obj2的类型为ClassB时返回为真
在 Swift 中如果写的是NSObject的⼦类的话
class ClassA: NSObject { }
class ClassB: ClassA { }
let obj1: NSObject = ClassB()
let obj2: NSObject = ClassB()
obj1.isKindOfClass(ClassA.self) // true
obj2.isMemberOfClass(ClassA.self) // false
2.在 Swift 中提供了⼀个更简洁的写法:对于⼀个不确定的类型,我们可以使⽤is来进⾏判断。is在功能上相当于原来的isKindOfClass,可以检查⼀个对象是否属于某类型或其⼦类型。is和原来的区别主要在于它不仅可以⽤于class类型上,也可以对 Swift 的其他像是struct或enum类型进⾏判断。如下:json检查
class ClassA { }
class ClassB: ClassA { }
let obj: AnyObject = ClassB()
if (obj is ClassA) {
print("obj 属于 ClassA")
}
if (obj is ClassB) {
print("obj 属于 ClassB")
}
另外,编译器将对这种检查进⾏必要性的判断:如果编译器能够唯⼀确定类型,那么is的判断就没有必要,编译器将会抛出⼀个警告,来提⽰你并没有转换的必要。如下:
let string = "String"
if string is String {
//
}
by:liming
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论