美文网首页Swift专题
Swift4.2~as,as!,as?

Swift4.2~as,as!,as?

作者: 记忆的北极 | 来源:发表于2018-09-19 12:57 被阅读30次

    一,as

    类型转换
    as :同类型的数据 OC和Swift之间转换

    let NetWorkData = Data.init()
    let netData = NetWorkData as NSData
    print(netData)
            
    let NetWorkStr = "Network"
    let NetStr = NetWorkStr as NSString
    print(NetStr)
    

    二,as!

    类型的强制转换
    as!操作符是类型转换的强制格式,优点在于代码简单,如果可以转换,则会返回转换了格式的对象,如果无法转换就会抛出运行时错误。因此除非百分之百确定可以转换,否则不应该使用as!来进行强制类型转换。

    class NetWClass:NSObject{
           var name:String = "NetWClass强制转换成功"
    }
            
     /**
    类型的转换 Any -> NetWClass
    */
            
    let paramClass:[Any] = [NetWClass.init()]
    for item in paramClass {
           let temp = item as! NetWClass
           print(temp.name)
    }
    

    三,as?

    as? 类型转换, 在类型转换失败的时候返回nil. 否则返回转换后的类型

    class NetWClassA:NSObject{
        var name:String = "NetWClassA强制转换成功"
    }
            
    class NetWClassB:NSObject{
         var name:String = "NetWClassB强制转换成功"
    }
            
            let ParamClassX:[Any] = [NetWClassA.init(), NetWClassB.init()]
            for item in ParamClassX {
                
            let temp = item as? NetWClassA
            if temp == nil{
               print(temp)
            }else{
               print((temp?.name)!)
            }
                
           let tempX = item as? NetWClassB
           if tempX == nil {
               print(tempX)
           }else{
               print((tempX?.name)!)
           }
    
    

    相关文章

      网友评论

        本文标题:Swift4.2~as,as!,as?

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