Swift 3.0 is、as类型转换

2017-01-14 10:02:16来源:http://www.jianshu.com/p/54e44d454d13作者:CrazerF人点击

第七城市
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(),要去掉它时,在最后一次类型转换时加!即可。




第七城市

最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台