Swift 基础语法
基本
1.取消了预处理命令
2.取消了指针的概念
3.取消了NS前缀
4.大量将类替换成struct
5.“;” 在同一行用来分割语句,如果不是同一行可以省略
6.可选项
7.playground
8.条件语句”if”,空执行”()”
9.没有非0即真的逻辑
10.switch (1)可以针对任意类型的值进行分支,不在局限在整数
(2)且一般不需要break。
(3)可以用“,”分割可选值
(4)所有的分支最少需要一条指令,如果没用指令的时候,就用break
11.传统的for循环已经被取消。 统一用for in ,并支持反转(正序逆序)等
12.i++, ++1 , i—, —i 都已经被取消
13.swift目前没有代码的自动布局,只能用frame或者xib
可选值
1.使用!解包
2.使用 ?? 解包(实际上是一个特殊的三目),优先级较低,一般用()包一下
3.连用语法 if let / var 判断对象的值是否为nil,进入分支后不需要解包
4.连用语法 guard let
1.{}在oc中的特殊用法, 常见的tableview的包装
字符串 string (注意区别NSString)
1.支持遍历 .characters
2.lengthofbytes 返回指定编码状态下的字节长度
3.characters.count 返回展示的长度(推荐使用)
4.将string 转换成 NSString
5.字符换的拼接
6.使用格式字符串
7.字符串的子串
类型转换 as
数组
1.swift存放类型可以存基础数据类型和结构体不需要包装,oc需要包装NSNumber,NSValue(包装结构体)
2.如果数组类型中的类型不一致,自动推导成NSObject
注意的是,CG 结构体中,还是需要用NSValue包装
3.swift 中还有一种类型,AnyObject —> 任意对象,可以没有父类,这个跟oc所有的类都有父类是不同的
4.遍历数组
(1) 与oc一样直接用[]去下标 for i in 0..<array.count
(2)与OC一样用for in 遍历 for s in array
(3)与OC一样用同时遍历下标和内容 for e in array.enumerated()
(4)swift特有的同事遍历下标和内容 for (n,s) in array.enumerated()
(5)反序遍历 for s in array.reversed()
(6)反序遍历下标&内容(先枚举后反序) for (n,s) in array. enumerated().reversed()
5.数组的增删改
(1)OC中数组可分为不可变NSArray和可变NSMutableArray,swift中用的是let,var来声明
(2)追加元素 array.append(“111”)
(3)修改通过下标定位修改 array[0] = “222”
(4)删除 array.remove(at:3); array.removeAll(keepingCapcity:ture)(移除但是保留空间)
6.数组的初始化可变数组,初始化容量为0,若插入后,如果还要插入容量不够,则容量=当前容量*2。如果初始化指定容量,可以避免插入时重复分配空间
var array = [int]()
7.数组的合并 var array1 ,let array2。
(1) array1 += array2 要合并的数组的类型必须一致,不同类型
字典
1.字典的定义,OC中用{} ,swift中用[]. 例如 let dict = [“name”:”张三”,“age”:10]
特例: let array= [[string : AnyObject]] = [ [“name”:”张三”,”age”:10] , [“name”:”李四”,”age”:15]]
2.字典的增删改 OC中有可变和不可变,swift中let 定义不可变, var 定义可变
var dict = [“name”:”张三”.”age”:15]
新增 如果key不存在就是新增
dict[“title”] = “大哥”
修改 如果key存在就是修改
dict[“name”] = “李四”
删除 —指定key删除
dict.removeValue(forKey:“name”)
注意:字典是通过key来定位的,且key必须是可以 hash的(每一个key可以转换成一个唯一的整数)
3.字典的遍历, OC遍历只能通过遍历key,然后才能取值
for e in dict e 是一个值对 用e.key e.value 分别取值
for (key,value) in dict key,value 分别取值
11.字典的合并
var dict1 = [“name”:”张三”.”age”:15]
let dict2 = [“name”:”李四”,“title”:“大哥”]
字典不能和数组类似的直接相加!!!
for e in dict2 {
dict1[e.key] = dict2[e.key]
}
合并的过程,如果key存在只是修改,不存在是新增
//demo下载地址:https://github.com/fushengit/Learn-Swift