標籤:[] 不能 byte 內容 table number dem 類型轉換 rate
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
Swift學習(1基礎文法)