美文网首页
Swift_Optional

Swift_Optional

作者: 古流风 | 来源:发表于2016-10-07 13:08 被阅读10次

    Optionl : 可选类型,可以让我们在一个具体的类型和nil之间进行选择

    在swift中nil是一个类型,不能和其他的类型共存

    var errorCode : Int = nil //这样会报错,不能直接把nil赋值给Int类型
    
    var errorCode2 : Int? = nil //这是正确的书写方式,在int后面加上“?”,表示errorCode2可以为Int类型,也可以为nil; 
    

    可选型解包

    var errorCode : String? = "404"
    
    erorrCode! //在变量后边加上“!”进行强制解包。当变量为nil时,解包时存在一定的风险
    

    //if语句进行解包

    if let errorCode = errorCode{
    
    print("the errorCode is " + errorCode)
    
    }else{
    
    "no erorr"
    
    }
    

    多次解包嵌套

    //第一种方法
    
    var errorMessage:string? = "not found"
    
    if let errorCode = errorCode{
    
      if let errorMessage = errorMessage{
    
       print("the errorCode is \(errorCode) and errorMessage is \(errorMessage)")
    
      }
    
    }
    

    //第二种方法

    if let errorCode = errorCode , errorMessage = errorMessage{
    
      print("the errorCode is \(errorCode) and errorMessage is \(errorMessage)")
    
    }
    

    optional chaining

    var errorMessage:String? = nil
    
    var upercaseErrorMessage = errorMessage?.uppercaseString //在errorMessage后面加“?”意思是对error进行尝试解包,当errorMessage不为nil时,解包成功并继续向后运行,为nil时则解包失败,不会报错,也不会向后运行
    
    var upercaseErrorMessage = errorMessage!.uppercaseString //对errorMessage进行强制解包,当errorMessage = nil 时会报错</code></pre>nil coalesce<pre><code>var errorMessage : String? = nil
    
    letMessage:String
    
    if let errorMessage = errorMessage{
    
      message = errorMessage
    
    }else{
    
      message = "no error"
    
    }
    
    //对上面的判断进行更简单的写法
    
    let message = errorMessage ?? "No error" //“??”对errorMessage进行判断,如果有值就取errorMessage,若为nil,就取值“No error”</code></pre>!!
    

    END

    相关文章

      网友评论

          本文标题:Swift_Optional

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