swift中可选值之间的区别?

jsh*_*hah 2 optional-values swift

有什么区别:

var title:String? = "Title" //1
var title:String! = "Title" //2
var title:String = "Title" //3
Run Code Online (Sandbox Code Playgroud)

如果我在各方面设置标题并且我被迫以不同的方式展开每个变量,我该怎么说?

Bar*_*zyk 6

想想?!喜欢一个可能有价值的盒子. 在此输入图像描述

我推荐这篇文章.

  1. 可选的框可能有值或可能没有,并且可选框不会被解包.

    var title:String? = "Title" //second and third picture
    
    Run Code Online (Sandbox Code Playgroud)

    您使用这样的展开值:

    if let title = title {
        //do sth with title, here is the same like let title: String = "Title"
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 可选框,可能有值或可能没有,并且可选框实际上是打开的.如果有值并且您访问该值,那就没问题(第二张图片,只需替换?!),但如果没有值,则应用程序崩溃(第三张图片,只需替换?!)

    var title:String! = "Title"
    
    Run Code Online (Sandbox Code Playgroud)
  3. 该变量具有肯定的值,并且您无法分配给该值nil(因为它不是可选的).可选表示存在值或没有值(nil):

    var title:String = "Title" //first picture
    
    Run Code Online (Sandbox Code Playgroud)