• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Swift判断对象属于什么类型

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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 的其他像是structenum类型进行判断。如下:

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

  


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Swift--Set的了解发布时间:2022-07-13
下一篇:
[Swift]LeetCode1140. 石子游戏 II | Stone Game II发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap