多语言展示
当前在线:587今日阅读:103今日分享:49

IOS开发入门 Swift语法的可选类型 可空类型使用

在Swift语法中的空是nil,可空类型叫做可选类型Optional,那么,可选类型该如何使用呢?
工具/原料

Xcode

方法/步骤
1

打开Xcode编辑器,创建一个MacOS的命令行项目,在其中定义一个字典:// 定义一个字典类型var dict = [0: 'Red', 1: 'Green', 2: 'Blue']// 这句话应该输出什么呢?Red?不是的,输出的是Optional('Red')print(dict[0])

2

上述字典在定义的时候,并没有明确指定类型,编译器就自动推断了类型是可空类型,那么,假设在定义字典的时候,就明确指定类型,结果会怎么样呢?// 明确指定类型的字典var dict2: [String: Int]// 给字典赋值dict2 = ['Red': 0, 'Green': 1, 'Blue': 2]// 此时,会输出0吗?结果仍然是可选的Optional(0)print(dict2['Red'])

4

如果将color定义为可空类型,赋值又会怎么样呢?// 赋值给可空类型var color2: Int? = dict2['Red']// 输出结果,仍然是可选的Optional类型print(color2)

5

可选类型在某些计算的时候,总是不方便的,那么如何强制将其转换为非空类型呢?第一种方式就是在使用color2变量的后面添加一个感叹号// 赋值给可空类型var color2: Int? = dict2['Red']// 输出结果就是非空的0了print(color2!)

6

还有一种方式,就是定义变量的时候,不定义可选类型,在赋值时,直接转换:// 赋值给非空类型,注意字典后面有个感叹号var color3: Int = dict2['Red']!// 输出结果就是非空的0了print(color3)

7

注意,上面感叹号将可选类型转换为非空类型的时候,假设没有指定的字典键,这种转换是会报错的// 获取字典中不存在的键 Yellowvar color4: Int? = dict2['Yellow']// 使用可选类型输出结果print(color4)// 强制转换后输出,运行就会报错print(color4!)

推荐信息