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可选型的使用详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!