Swift 中 is、as类型转换

1. is类型转换

用来判断该对象的类型能否被兼容,返回Bool值。

let str = NSString()
let b1 = str is NSString    //b1 = true
let b2 = str is NSObject  //b2 = true
let b3 = str is NSData   //b3 = false

2. as类型转化

Swift中类型要求非常严格,当一个对象被转成同种类型(如:字符串的String和NString也算)或一个泛指类型(即父类型)时,直接用as进行转换即可

let str = String()
let str1 = str as NSString
//转换成父类型
let str2 = str as NSObject
let str3 = str as AnyObject  //AnyObject可以代表任何class类型的实例
let str4 = str as Any        //Any可以表示任何类型,包括方法类型(function types)
//个人觉得Any比AnyObject好用

当要从父类型转换成其子类型时,需要增加判断,要用as?、as! 。as?表示可不可以转换成功都不会抛出异常;as!则表示一定可以转换,当转换失败时则抛出异常。

//确定的情况下用!
let str5 = str2 as! String   //str2类型为NSObject
let str6 = str3 as! String
let str7 = str4 as! String

//不确定时改为?
let str5 = str2 as? String
let str6 = str3 as? String
let str7 = str4 as? String

通常情况下系统都会提示我们加。加?得出的类型打印或显示出来时会多个Optional(),要去掉它时,在最后一次类型转换时加!即可。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,991评论 19 139
  • 前言 人生苦多,快来 Kotlin ,快速学习Kotlin! 什么是Kotlin? Kotlin 是种静态类型编程...
    任半生嚣狂阅读 26,282评论 9 118
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,778评论 18 399
  • 在经过一次没有准备的面试后,发现自己虽然写了两年的android代码,基础知识却忘的差不多了。这是程序员的大忌,没...
    猿来如痴阅读 2,872评论 3 10
  • 和你在一起的日子是粉红色的,我们一样热爱着大海。大狗和小猫,大宝和小宝,我们有各种各样的昵称,但怎样都绕不开,我们...
    西瓜猫阅读 498评论 0 0