Objective-C转swift很重要的一点就是确定类型,今天给大家简单分享一下几种基础但重要的可选型解包方式
//============1-2可选型的解包=============================================
var errcode2 : String? = "404"
var errMsg2 : String? = "我是错误消息"
print(errcode2)
//"The errCode2 is" + errcode2 //这句会报错 ,因为没解包
//第一种解包方式:强制解包,有出异常的风险
"The errCode2 is" + errcode2! //这句不会报错,因为强制解包
//第二种解包方式 :靠 if else 判断
if errcode2 != nil{
"The errCode2 is" + errcode2!
}else{
"errCode2 is nil"
}
//第三种解包方式
if let unwrappedErrCode2 = errcode2{ //一般解包出来的值都是不做修改的,所以一般都用let
"The errCode2 is" + unwrappedErrCode2
}
//第四种解包方式 第三种加强版
if let errcode2 = errcode2{ //一般解包出来的值都是不做修改的,所以一般都用let
"The errCode2 is" + errcode2
}
//第五种解包方式 同时多个参数解包
if let errcode2 = errcode2 , errMsg2 = errMsg2 { //一般解包出来的值都是不做修改的,所以一般都用let
"The errCode2 is" + errcode2
}
//第六种解包方式 同时多个参数解包
if let errcode2 = errcode2 , errMsg2 = errMsg2 where errcode2 == "404" { //一般解包出来的值都是不做修改的,所以一般都用let
"The errCode2 is" + errcode2
}
//============1-3 Optional Chaining 和 Nil-Coalesce ============================================================
var errMsg3 : String? = "I am message!"
//方法一
if let errMsg3 = errMsg3{
errMsg3.uppercaseString
}
//方法二
errMsg3?.uppercaseString
//强转
errMsg3!.uppercaseString
//第七种解包方法
if let errMsg3 = errMsg3?.uppercaseString{
errMsg3
}