Swift學習之路-day01
本人iOS開發(fā),使用的是OC語言開發(fā)募谎,最近利用空閑時間學習Swift扶关,并整理一下學習進度及學習筆記
常亮與變量
在iOS中,定義一個變量要區(qū)分可變與不可變之分数冬,而OC語言里區(qū)分可變與不可變是NS
和NSMutable
來區(qū)分节槐,如NSString
和NSMutableString
、NSArray
和NSMutableArray
吉执。
而在Swift中是用let
和var
區(qū)分
let 定義一個常量
var 定義一個變量
可選項
Optional
是Swift的一大特色,在OC中是沒有的疯淫。它的意義是定義一個可選類值,這個值可能沒有值,也可能有一個類值。
如定義一個Int類型的值,它可能為nil,也可能有值
在定義變量時戳玫,如果指定是可選的
熙掺,表示變量是一個可選類型的值,也可以是nil
定義變量時咕宿,在類型后面添加一個币绩?
蜡秽,表示變量是可選的
變量可選的默認值是nil
如
let y: Int? = 20
或者
var x:Int?
x = 10
x = 100
?
用來定義一個可選的Int類型,可能沒有值,也可能有一個整數(shù)
!
強行解包 - 從可選之中強行獲取對應(yīng)的非空值缆镣,如果真的是nil
就會崩潰芽突,崩潰信息如下:
奔潰信息
Thread 1: Fatal error: Unexpectedly found nil while unwrapping an Optional value
定義 可選項使用?
解包使用 !
董瞻,準備計算
let y:Int?
只是定義了一個y
沒有初始化
而 let y:Int? = 20
則是初始化寞蚌,給常量設(shè)置數(shù)值,初始化的工作能做一次
var x:Int?
定義了一個x
钠糊,可選默認為 nil
swift 三目運算符
??
是一個簡單的三目
如果有值,則使用值
如果沒有值,使用??
后面的值替代
let name: String? = "老王" //"老王"
print((name ?? "") + "你好")
print(name ?? ""+"你好”)
??
操作符號的優(yōu)先級’底’
挟秤,在使用是最好加上()
包一下
guard let & if let 的技巧
if let
連用,判斷對象的值是否為nil
,{}內(nèi)一定有值抄伍,可以直接使用艘刚,不需要解包
常量是可選項(Optional),if let
判斷后不需要解包(!)截珍,{ }內(nèi)一定有值
guard let
swift2.0推出攀甚,如果用if let
憑空多了一層分支,guard let
是降低分支層次的辦法
guard let
使用同名的變量接收值岗喉,在后續(xù)使用的都是非空值秋度,不需要解包
if let
同樣使用戶相同名的變量接收值,非空值僅在{}
內(nèi)使用钱床,
限定作用域静陈,oc代碼
中可以適當?shù)丶?code>{}來限定變量的作用域。
{}
包裝代碼 诞丽,()
是表示執(zhí)行
UILabel *myLabel = ({
UILabel *l = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 120, 160)];
l.text = @"hello world";
[self.view addSubview:l];
l;
});
注意
swift語言中一行代碼的結(jié)束不用“;”(分號)結(jié)束拐格,而是直接回車結(jié)束
oc語言一個操作代碼結(jié)束則需要“僧免;”(分號)結(jié)束
oc中的強轉(zhuǎn):
(int)a
swift的強轉(zhuǎn):
Int(a)