IOS开发入门 Swift可空/可选类型的值转换

 时间:2026-02-12 03:42:38

1、打开Xcode编辑器,创建一个MacOS的命令行项目,在其中定义一个字典类型,用于演示可选类型的转换

// 定义字典类型

var dict = [0: "Red", 1: "Green", 2: "Blue"]

IOS开发入门 Swift可空/可选类型的值转换

2、定义一个非空类型,使用感叹号将字典中的值强制转换为非空类型

// 将字典中的第一项取出来,转换为非空的值

var color = dict[0]!

// 输出结果,正确的输出了 Red 值

print(color)

IOS开发入门 Swift可空/可选类型的值转换

3、假设,要获取字典中序号为4的,当前不存在字典中的键,会怎么样呢?

// 获取不存在字典中的键值,并将其转换为非空的值

var color2 = dict[4]!

// 输出结果,跟C#/java一样会直接报错

print(color2)

IOS开发入门 Swift可空/可选类型的值转换

4、此时,就很自然的想到,在转换的时候,先判断结果是否为nil,不为nil再转换,这个时候就可以使用if-else来判断了

// 获取不存在字典中的键值,并将其转换为非空的值

var color2 = dict[4]

if color2 != nil {

    // 如果结果不是nil,就直接转换

    print(color2!)

} else {

    // 输出结果nil

    print(color2)

}

IOS开发入门 Swift可空/可选类型的值转换

5、这种方式的if-else写起来还是比较麻烦,那么,Swift语法中如何精简这种写法呢?

// 此处使用 var 或者 let都可以,只不过let的变量,后面不能重新赋值

if var color = dict[4] {

    // 如果dict[4]不为nil,才执行的语句

    print(color)

}

print("done")

IOS开发入门 Swift可空/可选类型的值转换

6、上面这种方式,定义的变量在if外面用不了,如果在if外面再定义一个相同的变量,会是什么样的结果呢?

// 此处使用 var 或者 let都可以,只不过let的变量,后面不能重新赋值

var color = dict[0]

// 此处是不是很神奇,可以将color赋给自己,也可以赋给另外的变量,并判断nil

if var color = color {

    // 如果dict[4]不为nil,才执行的语句

    print(color)

    color = "修改后的值"

}

// 这里的color是if外面的color变量,跟if同一行的color变量是两个变量

print(color)

IOS开发入门 Swift可空/可选类型的值转换

7、上面的方式,还是会觉得代码太多,有没有更加简单的方式呢?答案是有的,那就是使用双问号

// 定义变量,赋值不存在的字典键值

var color = dict[4];

// 使用双问号,如果color结果是nil,就返回双问号后面的值

var color2 = color ?? "color为空"

// 输出结果:color为空

print(color2)

IOS开发入门 Swift可空/可选类型的值转换

  • 如何手动升级WordPress博客
  • dedecms标题显示不完全
  • 战争之王的技能介绍
  • VirtualPC如何导入既有的虚拟机
  • CSOL装备尖端勇士OICW专业综合对比评测
  • 热门搜索
    1.6l什么意思 盛气凌人的凌是什么意思 物业最怕什么举报 客厅里放什么植物好 舆论的意思 邑是什么意思 shirt的意思 英文祝福 空中飞人是什么意思 挂单是什么意思