可选型

作者: 心底碎片 | 来源:发表于2016-09-08 16:45 被阅读6次
var errorCode: Int? = 90
errorCode = 0
errorCode = nil//只有是可选类型,才可以赋值nil
var color: UIColor? = nil

//可选型的解包Umwrap---在可选型的后面加!,强制解包有风险
var errorStr:String? = "404"
print(errorStr)
"The errorStr is " + errorStr!

if errorStr != nil {
    "The errorStr is " + errorStr!
}else{
    "No error"
}
//if let 解包
if let upwrapErrorStr = errorStr {
    "The errorStr is " + upwrapErrorStr
}else{
    "No error"
}
var errorMessage:String? = "NOt found"
if let errorStr = errorStr{
    if let errorMessage = errorMessage{
        "The errorStr is " + errorStr + "\nThe errorMessage is " + errorMessage
    }
}

if let errorStr = errorStr,
    errorMessage = errorMessage{
    "The errorStr is " + errorStr + "\nThe errorMessage is " + errorMessage
}
//既解包,又做了逻辑判断
if let errorStr = errorStr,
    errorMessage = errorMessage where errorStr == "404" {
        "The errorStr is " + errorStr + "\nThe errorMessage is " + errorMessage
}

var errorMessage:String? = "Not found"
if let errorMessage = errorMessage{
    errorMessage.uppercaseString
}
//等价于
errorMessage?.uppercaseString//安全的,当errorMessage=nil时,返回的是nil
//errorMessage!.uppercaseString//不安全的,当errorMessage=nil时,直接报错

var uppercaseErrorMessage = errorMessage?.uppercaseString//uppercaseErrorMessage是可选型
if let errorMessage = errorMessage?.uppercaseString{
    errorMessage
}
var errorMessage:String? = nil
let message: String
if let errorMessage = errorMessage{
    message = errorMessage
}else{
    message = "No error"
}

let message2 = errorMessage == nil ? "No error" : errorMessage
let message3 = errorMessage ?? "No error"//message3想取errorMessage的值,取不到,就显示"No error"

元祖可选型

var error1:(errorCode: Int, errorMessage: String?) = (404, "No found")
error1.errorMessage = nil
error1
var error2:(errorCode: Int, errorMessage: String)? = (404, "No found")
var error3:(errorCode: Int, errorMessage: String?)? = (404, "No found")
var ageInput: String = "12"
var age = Int(ageInput)
if let age = Int(ageInput) where age < 20{
    print("teenager")
}
var greeting = "Hello"
greeting.rangeOfString("ll")//2..<4
greeting.rangeOfString("oo")//nil

隐式可选型

var errorMessage: String! = nil
errorMessage = "Not found"//使用前必须赋值,不然会报错
"The message is " + errorMessage
class City {
    let cityName:String
    unowned var country:Country//unowned防治内存泄漏
    init( cityName:String, country:Country){
        self.cityName = cityName
        self.country = country
    }
}
class Country {
    let countryName:String
    var capitalCity:City!
    init( countryName:String, capitalCity:String){
        self.countryName = countryName
        self.capitalCity = City(cityName: capitalCity, country: self)
    }
    func showInfo(){
        print("This is \(countryName).")
        print("The capital is \(capitalCity.cityName).")
    }
}
let china = Country(countryName: "China", capitalCity: "Beijing")
china.showInfo()

相关文章

  • swift-可选型(Optional)

    可选型作为swift语言中一大亮点,也是非常重要的一个概念,为此我们要学好swift,就要把可选型学好。 什么是可...

  • Swift-可选型

    可选型的声明 可选型的基本用法 可选型更多用法 隐式可选型的用例

  • 可选型Optional

    Optional可选型 1.什么是可选型2.为什么要有可选型3.可选型的使用4.可选型的本质5.?与!与?? 什么...

  • 可选型

    元祖可选型 隐式可选型

  • Swift nil聚合运算符

    专门针对可选型设定的,a为可选型变量 a ?? b // a != nil ? a! : b可选型a如果不为n...

  • 铝模厂筹建流程

    铝模厂筹建流程 :加固体系选型→型材选型→设计团队建设→铝模板标准构件选型→生产工艺流程制定→设备及模具选型及采购...

  • LIMS系统选型经验总结

    有人认为LIMS系统选型就是为了选择正确的lims产品和供应商, 其实, 这并不是选型的全部。我们不能为选型而选型...

  • 博浪空气能地暖冷气机配件选型

    概要一览: 地暖冷气机技术参数表 水箱选型参照 管路型号选配 水泵选型参照 风机盘管选型参照 膨胀罐选型参照 地暖...

  • 利用 Wepy + ColorUI 框架快速开发小程序

    本文主要说明从技术选型上选用 wepy + colorUI 快速开发可维护的微信小程序。Wepy:https://...

  • Swift 2 学习笔记 5.可选型

    课程来自慕课网liuyubobobo老师 可选型 可选型 可选型的解包 nil coalesce(空合运算符)聊聊...

网友评论

      本文标题:可选型

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