在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
这一部分,主要讲Swift中创新的可选型(optionals) 一、概要 可选型是Swift创新的一种新的类型,首先看一下可选型的应用场景: var errorCode : Int = 404 这时候errorCode的值是404,表示此时的错误状态码是404,当产生一种错误的时候就会获得其对应的errorCode, 但是如果没有错误那应该怎么办呢? 在C/C++和Java中我们会给errorCode赋值为0或者是null(其实null也就是0),但是我们怎么能够保证0不是一种错误的状态码呢?
Swift为了解决这一问题,提供了可选型(optionals)当这个值不存在的时候,我们用nil表示, 需要注意的是: var errorCode : Int = 404 errorCode = nil 这是错误的,因为nil是一种特殊的类型,是不可以赋值给int型的变量的。 正确的操作是: var errorCode : Int? = 404 errorCode = nil 添加一个?就对了,这时候Int?表示的是整型的可选型 需要注意的是,可选型不可以赋值给不可选型的变量。
二、可选型的解包 在使用可选型的时候,需要进行解包操作,有两种解包(unwrap)方式: 1)强制解包 var errorCode : Int? = 404 print(“The errorCode is”+errorCode!) 这种解包方式需要开发者保证errorCode的值不是nil,否则就会报错。 2)if-let解包 var errorCode : Int? = 404 if let errorCode = errorCode { print(“The errorCode is”+errorCode) } 建议采用这种方式,当出现多个量需要解包的时候: if let errorCode = errorCode, errorMessage = errorMessage{ }
三、optional Chaining 先看看应用环境: var errorMessage : String? = “Not Found” if let errorMessage = errorMessage{ errorMessage.uppercaseString } 这种方式是错的,因为errorMessage是String而不是String? 如果要使用String的uppercaseString方法的话可以这样做: errorMessage?.uppercaseString 或者 errorMessage!.uppercaseString(确定不是nil) 这里的返回类型也是一个可选型 如果errorMessage!.uppercaseString返回,再进行操作就类似一条chain。
四、nil coalesce 我们建议在声明变量的时候就给变量赋初值,但有时候,我们希望通过后面的逻辑判断之后再对变量进行赋值 这时候我们可以这样做: var errorMessage : String? = nil let message = errorMessage == nil ? “Not Found” : errorMessage 当然可以通过nil coalesce方式 var errorMessage : String? = nil let message = errorMessage??“Not Found”
五、元组的可选型 var error1 : (errorCode : Int?, errorMessage : String?) = (404, “Not Found”) 其中errorCode和errorMessage是可选型,但是error1不是可选型 因此errorCode和errorMessage可以是nil,而error1不可以 var error1 : (errorCode : Int?, errorMessage : String?)? = (404, “Not Found”) errorCode和errorMessage,error1就都是可选型了
六、隐式可选型 主要应用在函数的构造函数中 var errorMessage : String! = nil !进行使用的时候可以不进行解包操作,但是必须确保不为nil 在使用的时候,构造函数可以这样定义,但是在后面会先赋值,再使用。 |
请发表评论