就是現(xiàn)在,還有大量iPhone或iPad使用著objective-C.objective-C是比較兩極分化的編程語言,讓人又愛又恨.在2014年WWDC,蘋果公司發(fā)布了Swift.對(duì)于經(jīng)常使用面向?qū)ο蟮某绦騿T(Java,C++).理解Swift起來更容易些.
1.0 Swift基礎(chǔ)
Xcode6最好的新功能就是playground,你在這里可以盡情的使用代碼,不需要?jiǎng)?chuàng)建一個(gè)環(huán)境來運(yùn)行它,輸入代碼,并查看結(jié)果即可.
創(chuàng)建playground. 啟動(dòng)Xcode.

隨便起個(gè)名字,進(jìn)入下一步,你會(huì)看到下面界面
當(dāng)然你也可以在playground中任意添加代碼,或者修改實(shí)例代碼,看看會(huì)發(fā)生什么

1.1 playground,注釋,變量,常量
如你所見,playground被分割成兩塊區(qū)域,代碼在左側(cè),執(zhí)行結(jié)果在右側(cè). 在你輸入代碼時(shí).Swift編譯器進(jìn)行編譯并執(zhí)行,幾乎能立即顯示結(jié)果. 在A-1中的代碼聲明了一個(gè)名為str的變量并賦值字符串"Hello, playground". 你可以看右側(cè)看到結(jié)果.試試改變這個(gè)值,可以注意到當(dāng)你停止輸入的時(shí)候,結(jié)果會(huì)立即進(jìn)行匹配更新.
最上邊一行的代碼是一個(gè)注釋.任何在//后且在回車符之前的字符都會(huì)被編譯器忽略. 當(dāng)然你不習(xí)慣獨(dú)占一行的注釋的話,也可以在代碼后添加注釋(不過不推薦這樣注釋):
var str = "Hello, playground" //這句話是個(gè)注釋
如果要編寫超過一行的注釋,可以將/*用作開頭,*/用作結(jié)尾:
/*
這是一行超過一行
的注釋
*/
當(dāng)然有各種不同的方式,來寫一個(gè)多行注釋.有些人喜歡表達(dá)清晰,每行的注釋由一個(gè)*字符開始:
/*
*這是一段超過一行
*的注釋
*/
第三行的import語句,使UIkit框架可以在playground上使用
import UIkit
?iOS有很多框架,UIkit是用戶界面框架,在我們所有的代碼示例中都將使用此框架.你會(huì)經(jīng)常使用的另一個(gè)框架是Foundation,其中的類提供一些基本功能,如日期和時(shí)間處理,文件管理,網(wǎng)絡(luò)等.要使用,訪問這個(gè)框架你需要導(dǎo)入它:
import Foundation
提醒:UIkit會(huì)自動(dòng)導(dǎo)入Foundation,因此任何導(dǎo)入U(xiǎn)Ikit的playground也可以自由訪問Foundation,無需再添加一個(gè)明確的import語句.
第5行是在playground中的可執(zhí)行代碼:
var str = "Hello, playground"?
現(xiàn)在我們?cè)囍薷牡?行的代碼:
var str:String
str = "Hello, playground"
你肯定感覺,這不是一樣的呢. 等價(jià)于原來的老代碼,但是你現(xiàn)在明確了一個(gè)str為一個(gè)字符串變量(String是Swift的類型,代表字符串).在大多數(shù)情況下,最好將聲明和初始化結(jié)合起來,并允許編譯器來推斷變量的類型.
下面是另外一個(gè)例子,它使用了Swift的類型推斷功能:
這里,編譯器推斷變量是整型.(將鼠標(biāo)懸停在number上,并按下Option鍵,鼠標(biāo)光標(biāo)將變成一個(gè)問號(hào)標(biāo)記.然后點(diǎn)擊鼠標(biāo),Swift會(huì)彈出框里顯示出推斷此變量的類型,如下圖所示)

不聲明變量的類型并不意味著它沒有類型或者可以對(duì)它隨心所欲地設(shè)定類型.變量聲明的時(shí)候,Swift會(huì)分配一個(gè)類型,你必須堅(jiān)持這種類型.與JavaScript這樣的動(dòng)態(tài)語言不同,你不能簡(jiǎn)單地通過指定一個(gè)新值改變一個(gè)變量的類型.
var number = 2
number = "haha"
試圖將一個(gè)字符串賦值給一個(gè)整形變量是錯(cuò)誤的,你會(huì)看到一條紅色標(biāo)記出現(xiàn)在playground的左側(cè).點(diǎn)擊它,Swift會(huì)顯示出一條消息,解釋出現(xiàn)的問題.

事實(shí)上,在編寫Swift的時(shí)候,提示的有些錯(cuò)誤的信息會(huì)有點(diǎn)難以理解(當(dāng)然這里提示的錯(cuò)誤比較明顯了).
你可能已經(jīng)注意到,我們沒有在聲明的末尾添加分號(hào).這就是Swift許多很棒的小功能之一.如果你已經(jīng)習(xí)慣了C,C++,OC或者Java編寫代碼,可能第一時(shí)間,你會(huì)感覺很奇怪,但一段時(shí)間后,你就會(huì)習(xí)慣它.當(dāng)然,你可以輸入分號(hào),但是這完全沒有必要. ?當(dāng)然有一種情況下,必須寫 分號(hào),即必須在同一行內(nèi)寫2個(gè)語句.下面的代碼是無效的:
var count = 2 count = 3
這里編譯器會(huì)提示你,應(yīng)該添加一個(gè)分號(hào).

如上圖這行代碼所示,你可以改變一個(gè)變量的值.這就是為什它被稱為一個(gè)變量的原因了.要是想將一個(gè)名稱賦予固定值? 換句話說,你要?jiǎng)?chuàng)建一個(gè)常量,并給他一個(gè)名字.為此,Swift提供了let 語句.語法上let 類似于var 但是必須提供一個(gè)初始值.
let pi = 3.14159265
與變量相似,Swift也可以推斷常量的類型,但你不能重新給常量賦值:
pi = 42 //錯(cuò)誤
當(dāng)然,你可以使用常量來給變量賦值
let pi = 3.14159265
var value = pi
如你所見,Swift會(huì)在可執(zhí)行代碼的右側(cè)打印結(jié)果.你也可以調(diào)用Swift標(biāo)準(zhǔn)庫(kù)print()函數(shù)來創(chuàng)建輸出結(jié)果.比如:
var str:String
str = "Hello, playground"
print(str)
字符串"Hello, playground"像往常一樣出現(xiàn)在playground右側(cè)的輸出區(qū)域,但它也在控制臺(tái)輸出.要查看控制臺(tái)輸出,將鼠標(biāo)懸停在結(jié)果區(qū)域,你看到一個(gè)圓角控件出現(xiàn),點(diǎn)擊右側(cè)的控件,playground的控制臺(tái)就會(huì)打開.

? 當(dāng)你在一個(gè)循環(huán)當(dāng)中執(zhí)行代碼時(shí),控制臺(tái)輸出是非常有用的.在這種情況下,右側(cè)區(qū)域不會(huì)顯示每次迭代的輸出,但是輸出臺(tái)會(huì)顯示.
未完待續(xù)...