簡體   English   中英

swift中可選值之間的區別?

[英]Difference between optional values in swift?

有什么區別:

var title:String? = "Title" //1
var title:String! = "Title" //2
var title:String = "Title" //3

如果我在各方面設置標題並且我被迫以不同的方式展開每個變量,我該怎么說?

想想? 而且! 就像一個可能有價值的盒子。 在此輸入圖像描述

我推薦這篇文章

  1. 可選的框可能有值或可能沒有 ,並且可選框不會被解包。

     var title:String? = "Title" //second and third picture 

    您使用這樣的展開值:

     if let title = title { //do sth with title, here is the same like let title: String = "Title" } 
  2. 可選框, 可能有值或可能沒有 ,並且可選框實際上是打開的。 如果有值並且您訪問該值,那就沒問題( 第二張圖片 ,只需替換? with ! ),但如果沒有值,則應用程序崩潰( 第三張圖片 ,只需替換? with !

     var title:String! = "Title" 
  3. 該變量具有肯定的值 ,並且您不能將此值賦值為nil (因為它不是可選的)。 可選表示存在值或沒有值( nil ):

     var title:String = "Title" //first picture 

`var title:String? =“標題”`

title目前有一個Title值,但將來它可能是nil 我需要使用可選綁定來解包它:

if let unwrappedTitle = title {
   println(unwrappedTitle)
}

或者通過強制解開! 字符

let unwrappedTitle = title!

如果titlenil則上面會崩潰

`var title:String! =“標題”`

title目前的值為"Title" 它可能是零,但我知道我使用它時永遠不會。 您不需要使用可選綁定或通過強制解包來展開它! 字符。

如果在nil訪問此值,程序將崩潰,但編譯器將允許您將此值設置為nil

`var title:String =“Title”`

title目前的值為"Title" 這可能會改變,但變量title將始終具有一些字符串值。 我不需要使用可選綁定或強制解包來檢查nil 如果您嘗試將title設置為nil ,編譯器將不允許您構建。

var title:String? = "Title" //1 Nil Possible-Force Unwrap needed-Nil checking when use
var title1:String! = "Title"//2 Nil Possible-Force Unwrap not needed-Nil cheking when Use
var title2:String = "Title" //3 Nil Not possible as its initailize when declared-No force unwrap needed-No Nil Cheking is needed.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM