Swift之Optional 可选值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Swift之Optional 可选值相关的知识,希望对你有一定的参考价值。

  • Optional 是 Swift 的一大特色,也是 Swift 初学者最容易困惑的问题
  • 定义变量时,如果指定是可选的,表示该变量可以有一个指定类型的值,也可以是 nil
  • 定义变量时,在类型后面添加一个 ?,表示该变量是可选的
  • 变量可选项的默认值是 nil
  • 常量可选项没有默认值,主要用于在构造函数中给常量设置初始数值
//: num 可以是一个整数,也可以是 nil,注意如果为 nil,不能参与计算
let num: Int? = 10
  • 如果 Optional 值是 nil,不允许参与计算
  • 只有解包(unwrap)后才能参与计算
  • 在变量后添加一个 !,可以强行解包

注意:必须要确保解包后的值不是 nil,否则会报错

//: num 可以是一个整数,也可以是 nil,注意如果为 nil,不能参与计算
let num: Int? = 10

//: 如果 num 为 nil,使用 `!` 强行解包会报错
let r1 = num! + 100

//: 使用以下判断,当 num 为 nil 时,if 分支中的代码不会执行
if let n = num {
    let r = n + 10
}

常见错误

unexpectedly found nil while unwrapping an Optional value

翻译

在[解包]一个可选值时发现 nil

?? 运算符

  • ?? 运算符可以用于判断 变量/常量 的数值是否是 nil,如果是则使用后面的值替代
  • 在使用 Swift 开发时,?? 能够简化代码的编写
  • 等同于三目运算
let num: Int? = nil

let r1 = (num ?? 0) + 10
print(r1)

以上是关于Swift之Optional 可选值的主要内容,如果未能解决你的问题,请参考以下文章

Swift:致命错误:在展开可选值时意外发现 nil

用返回非可选值的计算属性覆盖返回可选值的计算属性

致命错误:在展开可选值时意外发现 nil。迅速

Swift学习笔记之----元组与可选值类型

Swift学习笔记之----元组与可选值类型

Swift之深入解析可选类型Optional的底层原理