swift 可选型的使用详解
一、基本用法
可选性是Swift提供的一个特殊类型,它为我们编写程序提供便利的条件
swift是强类型语言,当我们需要使用一个变量,既可以为String,也可以为nil时,这时候就需要我们使用可选型。
//使用特殊值作为“无”可能产生歧义 //varerrorCode=404 //errorCode=0 //使用可选型 varerrorCode:Int?=404 print(errorCode) errorCode=nil print(errorCode) varcolor:UIColor?=nil //Int?和Int不是一种类型 letimInt=405 errorCode=imInt //imInt=errorCode //必须显示地声明可选型的类型 //varimOptional=nil varimOptional:String?=nil
二、可选型解包使用
varerrorCode:String?="404"
print(errorCode)
//可选型不可以直接使用
//"TheerrorCodeis"+errorCode
//强制解包
"TheerrorCodeis"+errorCode!
//强制解包是危险的
errorCode=nil
//"TheerrorCodeis"+errorCode!
//判断不是nil
iferrorCode!=nil{
"TheerrorCodeis"+errorCode!
}
else{
"Noerror"
}
//iflet解包
ifletunwrappedErrorCode=errorCode{
"TheerrorCodeis"+unwrappedErrorCode
}
else{
"Noerror"
}
//可以使用相同的变量名
ifleterrorCode=errorCode{
"TheerrorCodeis"+errorCode
}
else{
"Noerror"
}
//使用if-let同时解包多个变量
varerrorMessage:String?="Notfound"
ifleterrorCode=errorCode{
ifleterrorMessage=errorMessage{
"TheerrorCodeis"+errorCode+"\nTheerrorMessageis"+errorMessage
}
}
三、多层解包(**swift3.0有变化)
//多层解包(swift2.0使用)
ifleterrorCode=errorCode,errorMessage=errorMessage{
"TheerrorCodeis"+errorCode+"\nTheerrorMessageis"+errorMessage
}
//以上多层解包方法在swift3.0中应写为
ifleterrorCode=errorCode,leterrorMessage=errorMessage{
"TheerrorCodeis"+errorCode+"\nTheerrorMessageis"+errorMessage
}
//where(swift2.0使用)
ifleterrorCode=errorCode,errorMessage=errorMessagewhereerrorCode=="404"{
print("Pagenotfound")
}
//在swift3.0中应写为
//where
ifleterrorCode=errorCode,leterrorMessage=errorMessage,errorCode=="404"{
print("Pagenotfound")
}
四、Optionalchaining的使用
可选型?这种写法叫做Optionalchaining
这种方法可以进行尝试解包,使代码简洁
varerrorMessage:String?="NotFound"
ifleterrorMessage=errorMessage{
errorMessage.uppercased()
}
//使用Optionalchaining
errorMessage?.uppercased()
varuppercaseErrorMessage=errorMessage?.uppercased()
//uppercaseErrorMessage为可选型
ifleterrorMessage=errorMessage?.uppercased(){
errorMessage
}
//Optionalchaining也可以使用!
letuppercaseErrorMessage2=errorMessage!.uppercased()
//此时uppercaseErrorMessage2为String类型。此时为强制解包,容易出现错误
五、Nil-Coalescing的使用
//Nil-Coalescing
varerrorMessage:String?=nil
letmessage:String
ifleterrorMessage=errorMessage{
message=errorMessage
}
else{
message="Noerror"
}
//使用三目运算符
letmessage2=errorMessage==nil?"Noerror":errorMessage!
//注意:此时使用errorMessage需要强制解包.以保证message2是一个String,而非String?
//三目运算符?:的实质就是一个ifelse
//使用??
letmessage3=errorMessage??"Noerror"
//注意:此时使用errorMessage不需要强制解包.
//??符号已经保证了访问到errorMessage时,errorMessage不是nil
//Swift将为我们自动解包,保证message2永远是一个String,而不是String?
//这种用法叫做Nil-Coalescing
以上所述是小编给大家介绍的swift可选型的使用详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!