一、Optional
1、可选型声明关键符号?,每个类型都有可选性,比如下面声明为整型可选性。
var errorCode: Int? =404
print(errorCode)
print(errorCode!)
2、可选型解包关键符号!,例如,下方errorCode解包后就是一个整型变量。
//解包后就是整型
var aInt = errorCode!
aInt
var bInt = 0;
bInt = aInt;
bInt
3、if let 表示判断可选性变量不为nil,Swift中的nil和OC中不同,并不是代表空,而是一种特定的类型,而且变量不会被赋值默认值,所以声明后,如果要使用该变量必须为改变量赋值。
var errorMessage: String? ="Not Found"
//判断errorMessage是否有值,当不为nil时,解包成功,执行if语句
if let errorMessage =errorMessage
{
errorMessage.uppercaseString
}
//也可以写成:此种写法含义与上面if let相同
errorMessage?.uppercaseString
//意义跟上面两种完全不同,此时代表你确定errorMessage不为nil,所以强制解包。当errorMessage这个字符串可选型为nil时,编译会爆error
errorMessage!.uppercaseString
4、我们调用第三方的APK的时候可能errorMessage?.uppercaseString之后返回的还是一个可选型,所以我们可以继续?.方法名,这种就叫做可选型的链条(Optional Chaining)
//返回值也是可选型,因为可能会转换失败,
errorMessage?.uppercaseString
5、a ?? b 相当于 a !=nil ? 1 : 2
6、隐士可选型
var name: String! =nil
//使用的时候必须赋值,不赋值会报错,无法执行
name = "not found"
"This message is "+name
二、数组
1、声明数组
//整型Array
var aArray = ["1","2","3","4","5"]
//相当于
var bArray: [String] = ["1","2","3","4","5"]
//swift 字符串双引号之内默认是String,哪怕只有一个字符,如果想要声明Character显示声明
var cArray: [Character] = ["1","2","3","4","5"]
//或者也可以写成
var dArray: Array = ["1","2","3","4","5"]
//或者
var eArray: Array<String> = ["1","2","3","4","5"]
2、NSArray
//array 和NSArray最大的区别是NSArray可以放不同类型的数据
var gArray: NSArray = ["1",2,"3","4","5"]
//array中放不同的数据 会默认把数组里面的类型转成object 即:Array[object]
var fArray: Array = ["1",2,"3","4","5"]