swift基本語法

1.常量和變量swift

定義一個常量:let  常量初始化賦值後 不能再次賦值數組

定義一個變量:var  賦值後 能夠在此修改  後面必定要修改  不然選擇let網絡

2.Swift有數據類型推導  根據後面的值直接推出來的類型(option加鼠標左鍵4閉包

3.顯示指定類型 let cDouble 20.5app

4.swift中沒有隱式類型轉換函數

 類型不一樣 不能參與運算編碼

5.let&var  選擇url

建議先使用let  在哪須要修改時 再改爲varspa

6.optional可選類型定義的常量或者變量可能有值  可能沒有值(空,nil指針

1)定義的常量或者變量不能 直接參與計算

格式:可選類型-   類型後面加上

egvar aInt

定義的可選類型的變量默認值是nil

2‘ Optional ’代表 定義的變量或者常量是一個可選類型

‘ unwrapped ’ 代表可選類型沒有進行解包

3let result a !+ b

對可選類型的變量或者常量進行強制解包(告訴系統這個值必定存在  你去用吧 若是這個值不存在(unexpectedly found nil while unwrapping an Optional value  對一個可選值爲nil  強制解包  崩潰)

swift裏面操做符空格要匹配

4??運算符

let result a ?? 0)+ b

使用  空合併運算符 ‘ ?? ‘  判斷前面的可選類型的變量或者常量是否有值  若是有值  直接使用 a參與計算  若是anil  使用??後面的值參與計算

7.if控制流

1if num > 5

()能夠省略

swift  裏面  只有一行代碼 也不能省略{}’  swift裏面  沒有0即真的概念   條件語句的值  只能有true false  須要一個bool類型的值

2 可選類型的判斷

unexpectedly found nil while unwrapping an Optional value 

-對一個可選類型的值爲nil  強制解包 報錯

3if let 判斷

它的意思是   判斷可選類型的變量或者常量(URL)是否有值   有值  就使用前面定義的常量或者變量去記錄這個值   若是這個可選類型的變量或者常量爲nil   就不執行 if let語句

if let u url

//再次就能夠使用並且這個u是必定存在的

let request NSURLRequestURLu


4)多個可選類型的判斷

let nameString ?=張三

let age Int 20

//也能夠使用var進行判斷

if let n name,(vara age

print()

5guard let判斷  if let相反的語法

//在循環裏面能夠使用break   continue,不在循環裏面使用return

//guard let  判斷可選類型的常量或者變量是否有值  若是有值  則賦值給定義的常量或者變量   不然沒有值  執行else語句裏面的

guard let u url else


6)可選類型條件的判斷

if let …. where…. 

where子句沒有智能提示,子句能夠使用&&  

8.switch判斷

swift  能夠判斷任意類型  能夠省略break   能夠省略大括號   case後必須有可執行語句

OC  只能判斷整型

9.for循環

for while do whilefor in

0..<3  意思是  區間-[03

0…3 意思是閉區間 -[03

10.字符串的定義

1)定義:swift string這個類型  是一個結構體它的量級輕   速度是比NSString要快    它能夠跟NSString無縫轉換   支持字符串的遍歷

OC  NSString  它是一個對象   不支持字符串的遍歷

2)字符串的拼接

使用能夠拼接字符串

3‘ \()能夠拼接字符串

能夠不用強制類型轉換

4)字符串長度

 //統計字符串字符的個數

characters.count

//統計字節數

一個漢字在UTF8編碼格式下佔用3個字節

5)字符串的格式化

6)字符串的截取 

11.集合

1)數組

定義數組:let  不可變數組  var  對應的可變數組  

let array 1234

let array1 張三李四

var array2:[string string]()

//添加元素

array2.append蘋果

//數組的遍歷

for   

for value in array

for (index,value) in array.enumerate

//數組的合併 

 兩數組直接相加 

類型不匹配  不能直接合並

//數組刪除  remove

//數組的容量 capacity

容量是成倍擴展的  2的倍數

2)字典

字典的定義   string NSObject]這種字典類型是最經常使用     字典是無序的 數組是有序的

let定義的字典是不可變的   var  是可變的

//合併字典

 不一樣類型的字典不能合併

//字典的刪除remove 或者 dict「age」]= nil  

//添加  若是key不存在就是添加操做

//修改   若是key存在就是修改操做

12.函數

1//無參數  無返回值

func demo1()

//swift2.0裏面函數的第一個參數默認省略

//有兩個參數  無返回值

func demo2aIntbInt

//有兩個參數  無返回值的函數  num1 num2是外部參數 (是給調用方解釋參數是什麼意思   參數是幹嗎的)

func demo3num1 a Intnum2 bInt){}

//有參數有返回值的函數

func sumaIntbInt->Int {  return a + b }

2)函數格式

func 函數名(參數名:參數類型->返回值類型{}

3)沒有返回值的三種類型

<1>func demo(num1 a:Int,num2 b:Int){}

<2>func demo(num1 a:Int,num2 b:Int)->Void{}

<3>func demo(num1 a:Int,num2 b:Int)->(  ){}

4swift中能夠使用函數的嵌套

13.閉包

1)和OC中的block是很是相似的  是一個預先定義好的代碼塊   能夠做爲函數的參數傳遞   也能夠做爲函數的返回值   在須要的時候調用‘  ’     在使用self的時候須要注意循環引用

2)閉包定義格式     

閉包名 (參數名  :參數類型,…->返回值類型  in 執行代碼 

3)沒有返回值的閉包能夠直接去掉‘ ->(    ) ’

4)定義一個沒有參數 沒有返回值的閉包能夠直接去掉()->()   ()->Void

5)???尾隨閉包    

//若是閉包做爲函數的最後一個參數的話  則小括號()’  在閉包前面(小括號()提早關閉

//若是閉包沒有參數和返回值  能夠省略()->Void in’

14.OC block循環引用

//加載網絡數據的方法

//模擬耗時操做   獲取網絡數據 

15.解決block循環引用

//使用__weak  解決block的循環引用

//對象銷燬後  weakSelf指向的地址爲nil

__weak   typeofselfweakSelf self

//使用__unsafe_unretained解決block的循環引用

//對象銷燬後  weakSelf指向地址不變  地址對應對象已經銷燬了  崩潰了報野指針

__unsafe_unretained typeofselfweakSelf self

相關文章
相關標籤/搜索