接上篇,
1、隐式解析可选类型
目的:有些时候在程序架构中,第一次被赋值之后,可以确定一个可选类型总会有值,在这种情况下。每次都要判断和解析可选值是非常低效的,因为可以确定它总会有值。
折中类型的可选状态被定义为隐式解析可选类型。把想要用作可选的类型的后面的问号(String?)改成感叹号(String!)来声明一个隐式解析可选类型
let forcedString: String = possibleString!
print(forcedString)
let assumedString: String! = "An implicitly unwarpped optional string"
let implicitString: String = assumedString
print(implicitString)```
注:可以把隐式解析可选类型当作一个可以自动解析的可选类型,你要做的是只是声明的时候把感叹号放到类型的结尾,而不是每次取值的可选名字的结尾
2、断言:
可选类型可以让你判断值是否存在,你可以在代码中优雅地处理值缺失的情况,然而,在某些情况下,如果值缺失或者并不满足特定条件,你的代码可能没办法继续执行。这时你可以在你的代码中触发一个断言来结束代码运行并通过调试来找到值缺失的原因。
3、空合运算符
a??b:将对可选类型a进行空判断,如果a包含一个值就进行解封,否则就返回一个默认值b,等同于以下三目元运算符 a!=nil?a!:b
4、区间运算符
a...b表示从a到b包含ab常用在循环中
5、集合类型:
Arrays、Sets、Dictionaries:其中Arrays是有序的数据集、集合(Sets)是无序无重复数据的集、字典(Dictionaries)是无序的键值对的集。
在Swift语言中,这几个数据类型存储的数据值类型必须明确。这就意味着我们不能把不正确的数据类型插入其中。同时这也说明我们完全可以对取回值的类型非常自信
集合Sets,用来存储相同类型并且没有确定顺序的值。当集合元素顺序不重要时或者希望确保每个元素只出现一次时可以使用集合而不是数组
6、控制流
if repeat while while Swith case 标签 、guard(提前退出)
7、检测API的可用性
if #available(platform name version,...,*){
API可用,语句将执行
}else{
API不可用,语句将不执行
}