美文网首页iOS Developer程序员
Swift 中 is、as类型转换

Swift 中 is、as类型转换

作者: 敌敌味丶 | 来源:发表于2016-11-06 16:21 被阅读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(),要去掉它时,在最后一次类型转换时加!即可。

    相关文章

      网友评论

        本文标题:Swift 中 is、as类型转换

        本文链接:https://www.haomeiwen.com/subject/ushnuttx.html