美文网首页Swift 从入门到放弃
swift5 基本语法-可选类型&强制解包

swift5 基本语法-可选类型&强制解包

作者: 翀鹰精灵 | 来源:发表于2021-01-03 14:11 被阅读0次
可选类型(Optionals)

Objective-C中没有可选类型的概念,但是swift中的可选(Optional)类型,用于处理值缺失的情况。
在可选类型名称后面加个问号?,来定义一个可选类型,如下所示:

01.png

当我们声明一个可选变量或者可选属性的时候没有提供初始值,它的值会默认为 nil。可选类型的输出默认会有Optional,如下代码所示:

var age2 :  Int? = 10
print(age2) //Optional(10)

Tips:
但是像下面这种情况,赋值为 nil 会报错,因为不是可选类型的声明。

02.png
强制解包(Forced Unwrapping)

可选项是对其它类型的一层包装,Optional 是一个含有两种情况的枚举,None 和 Some(T),用来表示可能有或可能没有值,可以理解为一个盒子。
① 如果为nil ,那么是个空盒子;
② 如果不为nil,那么盒子里面装的是被包装类型的数据。
例:

var age : Int? //默认就是nil
age = 10 
print(age) //Optional(10)

如果要从可选项中取出来被包装的数据(将盒子里面的东西取出来),需要使用感叹号!进行强制解包。

var age : Int? //默认就是nil
age = 10
print(age!) //10

Tips:
如果对值为nil的可选项进行强制解包,将会产生运行时错误。

03.png
所以一般进行解包的时候,都需要判断可选项是否包含值。
let num = Int("123456");
if num != nil {
   print("字符串转换成功\(num!)")
} else {
   print("字符串转换失败!")
}
///字符串转换成功:123456
可选项绑定(Optional Binding)

可选绑定(optional binding)用来判断可选类型是否包含值,如果包含就把值赋给一个临时常量或者变量。
可选绑定一般配合if语句来对可选类型的值进行判断。
例:

if let num = Int("123456") {
    print("字符串转换成功:\(num)")
} else {
    print("字符串转换失败!")
}
隐式解包(Implicitly Unwrapped Optional)
  • 在某些情况下,可选项一旦被设定值之后,就会一直拥有值;
  • 这种情况,不必每次访问的时候都进行解包,因为能够确定每次访问都有值;
  • 在类型后面加个感叹号!定义一个隐式解包的可选项。
let num1 : Int! = 10
var num2 = num1 + 10;
print("num2:",num2)  //num2: 20

Tips:
如果对值为nil的可选项进行强制解包,也会产生运行时错误。

04.png

以上就是可选类型使用方法的记录,以及强制解包的注意事项,记录于此,方便日后查阅学习。

相关文章

  • swift5 基本语法-可选类型&强制解包

    可选类型(Optionals) Objective-C中没有可选类型的概念,但是swift中的可选(Optiona...

  • Swift - Optional 的解包 、 Optional

    类型后 + ? 为可选型 在可选后加 ! 为强制解包(强制解包是有风险的 )应先判断不为空,如: 高级解...

  • 可选值

    一、 基本概念 变量,类型,初始化 类型推断,强类型 可选类型,枚举 强制解包发现为nil导致运行时崩溃,不安全!...

  • 可选类型与强制解包

    Swift 前言 写在Swift4.0发布前夕.内容还是以swift3.1为主.不会讲述过于基础的部分.类似于字符...

  • swift 中 可选类型解包的3种写法

    swift 中 可选类型解包的3种写法 代码如下 方法1: if判断后,强制解包 方法2: if let 判断 不...

  • 获取可选类型的值

    可选绑定(解决的问题是:如何安全的获取可选类型中的数据?) Demo.swift 强制解包 Demo.swift ...

  • Swift 5 可选类型(Optionals)

    可选类型(Optionals) 可选项: 允许将其设置为nil 强制解包 可选项绑定: 通过把值赋给一个临时的常量...

  • Swift 5基础语法要点整理—可选项

    可选项 可选项,一般也叫可选类型,它允许将值设置为nil 在类型名称后面加个问号?来定义一个可选项 1、强制解包 ...

  • swift 3.0

    swift3.0学习 可选值 可选值:有可能被设置为nil,所有类型都可以被设置.?表示不能拿来运算.!强制解包,...

  • swift语法记录之可选项

    可选项(optionnal) 强制解包! 可选项可以理解为一个盒子,强制解包只是把内容取出来,并不会改变可选项的类...

网友评论

    本文标题:swift5 基本语法-可选类型&强制解包

    本文链接:https://www.haomeiwen.com/subject/fvjuoktx.html