標籤:res 獨立 方法 第一個字元 組元 小數 條件 if語句 pen
1.列印語句
print("Hello World")
2.定義常量和變數
定義一個字串常量與變數let constantString: String = "Hello" // let 常量名稱: 字串類型 = "字串"var varibleString: String = "World" // var 變數名稱: 字串類型 = "字串"
3.常量和變數類型會自動推斷,使用聲明的時候可以省略類型
let constantInt: Int = 1 // 常見的類型有 Int Double Float Stringvar pi = 3.14 // 編譯器會自動推斷出pi是Double類型
4.類型必須匹配
5.輸出的語句
print(constantInt) // 1print("π的值是:\(pi)") // 輸出:3.1415926.輸出字串時將常量或變數放入\()中
6.類型轉換
let three = 3 // 按住option,滑鼠移動到變數名上,點擊可以查看常量類型var pointOneFour = 0.14 // 系統自動推斷pointOneFour的類型為:Doublepi = Double(three) + pointOneFour // 只有類型一直才能操作,轉換格式: 類型名(變數或常量)let piInt = Int(pi) // Double轉Int,系統自動忽略小數點後面的數,會損失精度
7.元組
元組:多個可以是不同類型原色的集合let http404Error = (404, "Not Found") // 類型為:(Int, String),元組中的元素類型可以不同let (code, message) = http404Error // 將元組賦值給一個常量print("code:\(code), message:\(message)") // code:404, message:Not Foundlet (_, ErrorMessage) = http404Error // _ 可以起到省略的作用,這個在swift中應用很廣泛print(http404Error.1) // Not Found 通過下標訪問元素let ErrorCode = (requestError:401, 402, 403) // 定義元組的時候可以給單個元素命名
8.可選類型,如果有可能賦值為nil,就必須聲明為可選類型
1. 可選類型: 用來表示有值或沒值的兩種狀態var errorCode: Int? = 404 // 在類型後面添加一個?print(errorCode) // Optional(404)errorCode = nil // 對非可選類型賦值為nil會報錯print(errorCode) // nil
9.使用!必須裡面不為nil
3. 使用if語句強制解析,可選類型不能直接使用需要轉化if errorCode != nil { // 確定可選類型包含值後可以在變數名後加!強制解析 print(errorCode!) // 404}
10.可選綁定,將可選類型賦值給一個臨時的變數或者常量
if let code = errorCode { print(code) // 輸出:404, 自動解析}else {// print(code) // ?,code是局部變數 print(errorCode) // 如果errorCode = nil此處輸出nil}
11.隱式解析可選類型:因為一定有值,所以可以免去解析的麻煩
let assumedString: String! = "A" // 格式: 可選類型的?改成!print(assumedString) // Aif let TempString = assumedString { // 隱式解析可選類型可以被當做普通可選類型來使用 print(TempString) // A}
12.字串是否為空白
emptyString2.isEmpty // true, 通過isEmpty方法判斷是否為空白
13.遍曆字串的所有字元
for char in emptyString1.characters { // for迴圈後面會詳述 print(char) // 依次輸出emptyString1中所有字元}
14.擷取字串的長度
emptyString1.characters.count // 9, 擷取字串中字元個數包括空格
15.字串的連結
var string3 = string1 + string2 // Hello World, 通過"+"將兩個字串相連string1.append(" !") // Hello World !, 通過append()方法拼接let messages = "Hello \(string2) !" // Hello World !, 通過將常量或變數放入\()中
16.字串的截取
let messChar = messages[messages.startIndex] // H,通過第一個字元的索引擷取字元let firstIndex = messages.index(after: messages.startIndex) // 1, 第一個字元的索引let lastIndex = messages.index(before: messages.endIndex) // 13, 最後一個字元的索引let index = messages.index(messages.startIndex, offsetBy: 4) // 4, 初始位置位移4messages[index] // o, 通過索引獲得的字元為omessages[messages.endIndex] // ?, 注意:索引不能越界
17.數組的建立
var arrTitle = [String]()
18.數組的添加
arrTitle.append("超值出遊");arrTitle.append("精選門票");arrTitle.append("享遊港澳");
19.數組的遍曆
for arrItem in twoDouble { // 通過for in 迴圈遍曆 print(arrItem) // 依次列印每個元素}
for (index, value) in twoDouble.enumerated() { // 使用迭代器擷取數組元素以及索引號 print("索引:\(index), 元素:\(value)") // 依次列印索引號及元素 索引號:0, 元素:3.0 ...}
20.字典的聲明
var charDict = ["char1":"A", "char2":"B"] // 系統會作自動類型推斷,類型也可以省略
21.字典的添加
chars["char3"] = "C"
21.字典的移除
chars.removeValue(forKey: "char2")
22.字典的更新
chars.updateValue("b", forKey: "char2") // 更新索引值對,要是這個鍵不存在則會添加一個
23.字典的遍曆
for (key, value) in charDict { // 遍曆字典中的所有key value print("\(key): \(value)") // char2: B 換行 char1: A}for key in charDict.keys { // 遍曆字典中的所有key print(key) // char2 換行 char1}for value in charDict.values { // 遍曆字典中的所有value print(value) // B 換行 A}
24.for迴圈的操作
for num in 1...5 { // 依次把閉區間[1, 5]中的值賦值給num print(num) // 依次輸出5個數字}
25.if/else
num = 3if num == 3 { // if後判斷語句返回為真,執行後面{} print(num) // if語句後面的{}不能省略}else { // if後判斷語句返回為假,執行else後面{} print("num is not equeal to 3")}
26.switch
num = 12switch num {case 2: print("num等於2") // 每個case分支至少需要包含一條語句 print("num等於2") // case分支末尾不需要寫break,不會發生貫穿case 3, 4, 5: // case語句可以匹配多個值,之間用(,)隔開 print("num == 3 or 4 or 5")case 6..<10: // case語句也支援區間 print("num大於等於6,且小於10")case 10..<19 where num % 3 == 0: // 使用where語句來增加額外判斷條件 print("num大於等於10,且小於19,且能被3整除")default: print("上面的情況都不滿足")}
27.基本函數: 用來完成特定任務的獨立程式碼片段
func minMax(currentArray array:[Int]) -> (min:Int,max:Int) { var currentMin = array[0]; var currentMax = array[0]; for arrItem in array { if arrItem < currentMin { currentMin = arrItem; } if(arrItem>currentMax) { currentMax = arrItem; } } return (currentMin,currentMax) }
28.不確定參數個數的函數:
// 計算多個數的平均數func avarageNum(_ num: Double...) -> Double { // 參數後面加...表示有多個參數 var total: Double = 0 for number in num { total += number } return total/Double(num.count)}avarageNum(2, 6, 4, 8, 7) // 5.4, 參數個數不限avarageNum(5) // 注意: 一個函數只能有一個可變參數
27.網路請求架構
Alamofire.request("http://wimg.mangocity.com/bms/api/app/index/index.json", method: .get, parameters: nil, encoding: JSONEncoding.default) .downloadProgress(queue: DispatchQueue.global(qos: .utility)) { progress in print("Progress: \(progress.fractionCompleted)") } .validate { request, response, data in debugPrint(response) return .success } .responseJSON { response in debugPrint(response) }
swift文法100