一直使用objective-c進行開發,今天終于下定決心好好學習一下swift。學習后還是感覺到swift在使用上的方便之處。于是在此做一個筆記加深記憶。
常量與變量
聲明基本數據類型
在objective-c中聲明變量格式: 類型 變量名 = 值
int a = 10;
在swift中 : var/let 變量名 : 類型 = 值
其中var代表變量,let代表常量。常量的是不可以不修改的。
var a : Int = 2
a = 10;//正確
let b : Int = 1
b = 10; //錯誤
值得一提的是let聲明的常量在內存上保存的地址不能發生改變,所以我們無法對let常量重新賦值。
或許你已經注意到了,這樣聲明swift貌似比oc更加麻煩,但swift厲害之處就在于它可以推測類型。
let a = 2 //系統自動轉換為Int類型
let b = 2.23 //系統自動轉換為Double類型
基本類型轉換
在objective中,當我們使用兩個不同類型的變量運算時,系統會采取隱式轉換將類型統一。
int a = 1;
float b = 2.2;
int c = a + b; // c=3
但在swift中,系統并不會隱式轉換,所以當兩個不同類型的變量運算時,編譯器會報錯。我們需要手動的去做類型轉換。
let x :Int = 1
let y :Double = 2.31
let z = x + Int(y)
我們需要使用: 類型(變量)
的方式來進行類型轉換
非基本數據類型
聲明一個UiView的對象,并修改背景顏色
objective-c中
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 100)];
view.backgroundColor = [UIColor redColor];
swift中:
let rect = CGRect(x: 0, y: 0, width: 100, height: 100)
let view : UIView = UIView(frame: rect)
view.backgroundColor = UIColor.brown
可以看到swift中不支持以前的CGRectMake方法,而使用CGRect(參數名:參數...)的方式初始化,同樣在初始化view的時候也是調用UIView:(參數名:參數...)的方式代替oc中的initWithFrame:函數
條件判斷語句
與objective-c最大的不同是,swift在做條件判斷的時候不支持(非0/nil)這樣的判斷。
let i = 1
if i { //這樣是不行的
}
if i == 1 { //這樣才可以
}
guard關鍵字
guard關鍵是swift新引入的一種寫法,它必須和else連用
let age = 20;
func online(age : Int) {
guard age > 18 else {
print("error")
return
}
print("ok")
}
如果滿足條件,會直接跳過{}執行后面代碼,如果不滿足則會執行else里的內容。使用它的好處在于可以讓我們的代碼可讀性更高。
switch關鍵字
和objective-c不同
1.swift中不需要在case中寫break。
2.可以支持多個條件的判斷
3.支持區間
let age = 20;
switch age {
case 2:
print("小孩子")
fallthrough
case 10,19:
print("少年郎")
case 20...30:
print("工作狗")
default:
print("有問題")
}
case1.如果希望執行完case后繼續執行,可以添加fallthrough
關鍵字
case2.使用,分割來表示多個條件判斷
case3.判斷是否在區間 20...30 等于 x >= 20 && x <= 30,也支持半開半閉區間20..<30 等于x > 20 && x <30
循環語句
for循環是我們使用得最多的循環語句了,在swift3.0以后for循環只支持區間遍歷
for i in 0..<10 {
print(i)
}
//oc中
for (int i = 0; i < 10; i++) {
print(i)
}
當循環體內不需要使用i時,我們還可以用_代替。
for _ in 0..<10 {
print("遍歷10次")
}
while循環和oc種差不多,只是省略了判斷語句的括弧
var num = 1
while num <= 10{
num += 1 //swift中不支持使用++運算符
print(num)
}
這里有個注意點,swift中不支持使用++運算符。
do...while循環在swift中使用repeat關鍵字代替do
var num = 10
repeat {
num -= 1
print(num)
} while num > 0