继续创作,加速成长!这是我参与「日新方案 · 6 月更文挑战」的第18天,点击检查活动详情。

在本章中,你将学会OptionalChaining可选链的运用方法。

前语

Apple官网或许网上分享的教程类文章不同,我将以实际开发视点叙述Swift语言的一些概念和用法,便利咱们更好地学习和掌握Swift语言。

这同时也是对自己学习Swift语言过程的知识收拾。

如有错误,以你为准。

可选链的界说

可选链,是一种以安全的方法拜访类的目标特点的方法。

可选链的作用,其实是为了在咱们拜访某个目标特点时,避免因为回来成果为nil,即特点不存在而引发的体系报错或许闪退,因为Swift不能空调用。

可选链的运用

咱们新建一个PlayGround项目,命名为SwiftOptionalChaining

1.png

可选链的运用方法是在特点、方法、或下标的可选值后面放一个问号“”,可选链可以将回来的成果包装成可选项,假如可选项有值,那么调用就会成功,输出的成果就会被包装成可选项。但假如可选项的值是 nil,那么调用就会失利并回来 nil。示例:

import UIKit
class Person {
    var name: String = "文如秋雨"
    var age: Int = 26
}
var person: Person? = Person()
if ((person?.name) != nil)&&(person?.age) != nil {
    print("name和age的值不为空")
} else {
    print("name和age的值为空")
}

2.png

上述代码中,咱们界说了一个Person类,在Person类中咱们声明晰两个变量:nameage,确定好类型并赋予了参数值。

假如咱们需求拜访Person类的目标时,咱们声明一个类型的Person可选项的person变量拜访Person类。

咱们这里加一层判别,假如nameage的可选项回来值不为空,咱们打印输出下内容,假如为空,咱们也打印输出下内容。

这种方法能让咱们快速定位到问题点,特别是当咱们是通过网络恳求或许接口接收json格局的数据时,咱们就需求通过可选链式调用拜访对应的特点。示例:

let json = """
{
"name": "Ricardo",
"country": "China",
"city": "Guangzhou"
}
"""

3.png

上述代码是咱们最简略接收到的json格局数据,它有三个特点:namecountrycity,假如在咱们体系里需求运用到4个参数nameagecountrycity,假如接收到的json里根本咱们需求的特点age,那么用可选链的方法,咱们就可以立刻知道,而不至于体系报错。

可选链的其他运用

假如目标是是数组或许字典类型,咱们还可以运用可选链的下标方法调用或许修正数组或许字典的值。

class Model {
    var sampleModels = ["前端", "后端", "安卓", "iOS"]
}
var model: Model? = Model()
let category = model?.sampleModels[0]
print("\(String(describing: category))")

上述代码中,咱们界说了一个Model类,声明晰一个变量数组,并赋予了一些值。

同样,咱们声明一个可选项model,数据来源于Model类。然后声明晰一个category常量运用可选链下标的方法获得sampleModels数组第一个值,咱们打印输出看下效果。

4.png

本章代码

// SwiftOptionalChaining
import Foundation
import UIKit
class Person {
    var name: String = "文如秋雨"
    var age: Int = 26
}
var person: Person? = Person()
if ((person?.name) != nil) && (person?.age) != nil {
    print("name和age的值不为空")
} else {
    print("name和age的值为空")
}
let json = """
{
"name": "Ricardo",
"country": "China",
"city": "Guangzhou"
}
“""
class Model {
    var sampleModels = ["前端", "后端", "安卓", "iOS"]
}
var model: Model? = Model()
let category = model?.sampleModels[0]
print("\(String(describing: category))")

以上就是本章的全部内容。

快来动手试试吧!

假如本专栏对你有协助,不妨点赞、谈论、关注~