澳门至尊网站-首页

您的位置:澳门至尊网站 > 软件综合 > [iOS笔记]Swift中的Optional类型

[iOS笔记]Swift中的Optional类型

2019-11-28 14:02

[iOS笔记]Swift中的Optional类型 (可选类型)

Optional类型表示: 有值 / 未有值

在Objective-C中并未Optional类型, 只有nil,并且nil只好用来表示对象类型无值,

并无法用来根底项目(int, float),枚举和结构体,基本功项目要求重回相通NSNotFound的例外值来代表无值,

故此在Swift中定义了Optinal类型来表示各连串型的无值状态,并规定了nil不可能用来非可选的常量和变量,只可以用于Optinal类型

先看一下主导的用法:

var serverResponseCode: Int? = nil
// serverResponseCode 现在不包含值

serverResponseCode = 404
// serverResponseCode 包含一个可选的 Int 值 404 

Int? 表示serverResponseCode可以是有值的也可以是无值的


var surveyAnswer: String?
//surveyAnswer 被自动设置为 nil

在if语法中的用法

行使 if 语句和 nil 来判别贰个Optional类型是还是不是有值

var convertedNumber: Int? 

if convertedNumber != nil {
     print("convertedNumber contains some integer value.")
}

可选绑定( optional binding )

利用optional binding来决断optional类型是还是不是有值,并且只要有值就把值赋给多少个常量只怕暂且变量。

optional binding能够用在 if 和 while 语句中:

if let constantName = someOptional {
     print("get the value: (constantName)")
}


//如果someOptional这个optional类型有值,创建一个叫做constantName的常量并将someOptional包含的值赋给它。
//并且因为constantName已经被optional类型包含的值初始化过,所以不需要再使用 ! 后缀来获取它的值。

强制解析/解包 ( forced unwrapping )

当鲜明可选类型确实富含值之后,能够在可选的名字背后加一个感慨号( ! )来获取值;

当Option == nil时,使用 ! 来获得会变成运维时不当。所以使用 ! 来强制深入深入分析值从前,必供给鲜明Option类型不是nil的

隐式拆解分析可选类型 ( implicitly unwrapped optionals )

一时在编写程序中,一个optional类型第壹次被赋值后,能够规定它之后总会有值,

在此种情状下,使用它时每一回都还须求推断和解包optional类型是可怜低效的,因为能够规定它总会有值,

所以斯维夫特中定义了二个隐式深入分析可选类型,它在使用时能够自动解析;

把( String? )改成感叹号( String! )就可以声圣元个隐式拆解剖析可选类型。

let possibleString: String? = "An optional string."
let forcedString: String = possibleString! // 需要惊叹号来获取值


let assumedString: String! = "An implicitly unwrapped optional string." 
let implicitString: String = assumedString // 不需要感叹号

然而须要留意:

  • 比如您在隐式分析可选类型未有值的时候取值,会触发运转时不当,

    那和您在无值的平常Optional类型前边加一个惊叹号的现象相通;

  • 假使二个变量以往还也许变为 nil 的话,不要采纳隐式拆解深入分析可选类型;

  • 况兼只要供给在变量的生命周期中剖断是还是不是 是 nil 的话,请使用普通可选类型;

可以预知为隐式解析可选类型用于注明早先化时或者为nil,但今后会立马被赋值,而且不会再产生nil的Optional类型对象

本文由澳门至尊网站发布于软件综合,转载请注明出处:[iOS笔记]Swift中的Optional类型

关键词: