1、常量和变量
选择let还var
优先选择let,因为这样安全,如果实在需要改再选var
2、基本运算
- swift里没有++和--
- swift里表达式没有返回值,比如oc里a=11这个表达式的值是11,但是swift里a=11这个表达式的值为空
3、逻辑分支
guard
这是swift2.0以后新增加的一个用法,比较简单,注意一下
switch
与OC里用法出入很大,基本全是反起来的,而且扩展了一些特殊用法
4、元组
一组元素就叫元组,类似于数组和字典,即可用下标取元素,也可用别名来取
5、可选类型
这个类型有什么用
为了表示没有值的情况(OC里int a;
这句代码实际上a是有值,a的值为0)
这个类型的意义
可选类型表示可能有值,也可能没有值
非可选类型表示无论什么时候都有值
两种定义方式
var num1: Optional<Int> = 3
或者var num2:Int? = 4
注:可选类型本身也是一种类型(就像Int是整形,float是浮点型),比如上面这个就是把Int包起来的可选类型,与Array<Int>一样,只能与Optional<Int>进行运算
还有一种写法是这样:var num2:Int! = 4
这里的num2也是可选类型,它表示只要使用的时候有值就行,比如swift里的插座控件都是这个类型
Swift里的nil
swift中只有可选类型才能赋值nil,这里的nil就是一个特殊含义的字符,表示没有值(与oc的nil完全不一样,oc的nil表示空指针,值为0x000000)
强制解包 “!”
?可选类型(包装了其他类型)
!强制解包(包装的什么类型就变成什么类型)
“强制解包”的四种方式
因为可选类型有可能为空,所以不能随随便便取值了
//写法一
var num: Int? = 0
num = nil
if num != nil{
let result = num!
result + 1
}
//写法二:可选绑定
//首先判断num是否为nil,是则let result = num的值为false,如果num不为nil,则let result = num的值为true,而且还会把num强制解包,并把解包后的值赋值给result
var num: Int? = 0
num = nil
if let result = num{
result + 1
}
//写法三:guard守护
func check(score: Int?){
guard let s = score else{
return
}
s + 1
}
//写法四:空合运算符“??”
var a: Int? = 1
//如果a==nil,那么返回??后面的值
//如果a != nil,返回a!强制解包后的值
var b = a??0
6、常见的类型转换符号
- as 将实例转成某一种类型,比如子类→父类
- as?将某个类型转成可选类型,通过判断可选类型是否有值,来决定是否转化成功
- as! 将某个类型转成具体的类型,但是注意,如果不是该类型,那么程序会崩溃
网友评论