iOS Developer程序员

Swift 中 is、as类型转换

2016-11-06  本文已影响0人  敌敌味丶

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

上一篇 下一篇

猜你喜欢

热点阅读