鑒于最近小伙伴嘲諷我,再不學swift就要老了,最近工作也不是很忙,就找些資料學習下,此系列為學習筆記和思考,難免有理解錯誤的地方,希望有個考究記憶的地方。
1.基本語法數據類型和運算符等基礎點
1)語法規范。
運算符號與要計算的變量或常量之間要有特定的格式要求(一般是要有空格),否則編譯就回報錯。
let a = b + c; 正確
let a =b + c; 或 let a = b+ c; let a = b +c; 都會報錯。
oc也是有語法規范的,不同的人有不同的代碼風格,但是oc中卻不會提示報錯
2)swift每條語句結束后面何以不必加分號;個人習慣加上分號,這一點不必深究。
3)swift中字符串變量匹配是否相等用的== (oc中這樣不準確),拼接字符串使用 + (oc為方法拼接) 。
let strC = strA + strB;
strA.append(strB); //拼接不產生新字符串
if strA == strB {
//do somthing
}
4)獲取字符串長度:String.characters.count;
5)字符(Character)和字符串(String)的區別聯系
字符只能存儲單個字母,字符串可以存儲多個;
字符初始化不能為空,會報錯,字符串可以初始化為nil;
let char : Character = ""; //會報錯;
let char : String = ""; //不會報錯;
let char = ""; //默認為String類型的是不報錯的。
6)數組創建
var strArray :[String] = ["abc","def","ghi"]; //有值字符串數組
var intArray = [Int](); //無值int數組
var intArray = [Int](count:2, repeatedValue: 2); //有值int數組,兩個2.
7)數組添加值
var strArray = [String]();
strArray.append("xiaosan"); //方法添加元素
strArray += ["dude"]; //+號添加元素
8)字典
字典創建
var someDict :[Int : String] = [1:"xiaosan" ,2:"xiaopihai",3:"dafei"];
字典添加鍵值對/更新鍵值對
var oldValue = someDict.updateValue("One 新的值", forKey: 1);
如果使用updateValue方法后,會查看字典中是否有這個key,如果有即修改,如果沒有即添加 。 updateValue方法有返回值,如果此時該方法是添加,則返回nil;如果此時該方法是修改,則返回修改前的值。
移除鍵值對
someDict.someDict.removeValue(forKey: 2);//移除key為2的鍵值對
someDict[2] = nil; //這樣也能移除這個鍵值對
獲取字典key和value數組
let dictKeys = [Int](someDict.keys);
let dictValues = [String](someDict.values);
獲取鍵值對個數
let dictCount = someDict.count;
判斷字典是否為空 布爾值
let isDictNil = someDict.isEmpty;
9)函數
利用func 關鍵字構建函數,格式如下:
func 函數名稱(形參,形參)-> 返回值類型{ }
函數和oc中的方法對應,swift中函數可作為函數類型;
一般默認在函數中定義的參數都是常量參數,也就是這個參數你只可以查詢使用,不能改變它的值。如果想要聲明一個變量參數,可以在參數定義前加 inout 關鍵字,這樣就可以改變這個參數的值了:(_ 參數名 : inout 類型)
func getName(_ name: inout String).........
10)閉包
閉包(Closures)是自包含的功能代碼塊,可以在代碼中使用或者用來作為參數傳值。Swift 中的閉包與 C 和 Objective-C 中的代碼(blocks)以及其他一些編程語言中的 匿名函數比較相似。
屏幕快照 2017-07-24 下午2.46.31.png
上圖閉包的疑問點,有部分不在實際中運用,并不能理解其中的含義。暫貼張圖方便查找。
語法:
{ (參數,參數)-> 返回值類型 in
//閉包體
}