鍍金池/ 教程/ iOS/ Swift快速入門
Swift模式
Swift溢出運(yùn)算符
Swift連接多層鏈接
Swift類聲明
Swift類型特性
Swift解決閉包引起的循環(huán)強(qiáng)引用
Swift函數(shù)參數(shù)名稱
Swift下標(biāo)
Swift嵌套函數(shù)
Swift字符串插值
swift數(shù)值型字面量
Swift條件語句
Swift實(shí)例方法
Swift定義一個基類
Swift協(xié)議聲明
Swift比較字符串
Swift空白與注釋
Swift浮點(diǎn)數(shù)
Swift區(qū)間運(yùn)算符
Swift閉包
Swift數(shù)據(jù)類型
Swift Unicode
Swift高級運(yùn)算符
Swift擴(kuò)展語法
Swift自動引用計數(shù)實(shí)踐
Swift下標(biāo)腳本用法
Swift捕獲值
Swift for循環(huán)
Swift 繼承
Swift常量
Swift通過閉包和函數(shù)來設(shè)置屬性的默認(rèn)值
Swift比較運(yùn)算符
Swift循環(huán)語句
Swift析構(gòu)聲明
Swift防止重寫
Swift嵌套類型
Swift if...else語句
Swift集合的可變性
Swift訪問控制
Swift break語句
Swift函數(shù)類型
Swift原始值
Swift字符串是值類型
Swift For語句
Swift命名類型參數(shù)
Swift類型安全和類型推斷
Swift邏輯運(yùn)算符
Swift決策
Swift字符串和字符
Swift閉包是引用類型
Swift三元條件運(yùn)算
Swift泛型形參子句
Swift突變方法要求
Swift函數(shù)的定義與調(diào)用
Swift Any和AnyObject類型轉(zhuǎn)換
Swift泛型類型
Swift閉包引起的循環(huán)強(qiáng)引用
Swift 屬性
Swift優(yōu)先級和結(jié)合性
Swift主表達(dá)式
Swift重寫
Swift運(yùn)算術(shù)語
Swift協(xié)議合成類型
Swift構(gòu)造器聲明
Swift 擴(kuò)展
Swift 反初始化
Swift函數(shù)參數(shù)與返回值
Swift結(jié)構(gòu)體
Swift聲明特性
Swift語句
Swift引入聲明
Swift ARC自動引用計數(shù)
Swift類型轉(zhuǎn)換
Swift協(xié)議類型
Swift繼承
Swift運(yùn)算符函數(shù)
Swift集合中的協(xié)議類型
Swift While循環(huán)
Swift協(xié)議
Swift變量聲明
Swift方法擴(kuò)展
Swift通過可選鏈調(diào)用屬性
Swift類和結(jié)構(gòu)體對比
Swift Switch語句
Swift分支語句
Swift協(xié)議的語法
Swift值類型的構(gòu)造器代理
Swift協(xié)議的繼承
Swift算術(shù)運(yùn)算符
Swift在擴(kuò)展中添加協(xié)議成員
Swift字符串可變性
Swift類型注解
Swift擴(kuò)展聲明
Swift自動引用計數(shù)
Swift類是引用類型
Swift析構(gòu)過程
Swift存儲屬性
Swift全局變量和局部變量
Swift下標(biāo)腳本聲明
Swift類和結(jié)構(gòu)體
Swift數(shù)值型類型轉(zhuǎn)換
Swift類型別名
Swift 協(xié)議
swift分號
Swift賦值表達(dá)式
Swift計算字符數(shù)量
Swift定制化構(gòu)造過程
Swift運(yùn)算符優(yōu)先級
Swift可選鏈
Swift標(biāo)識符
Swift泛型所解決的問題
Swift二元表達(dá)式
Swift閉包
Swift匹配枚舉值和Switch語句
Swift使用字符
Swift斷言
Swift類型的別名聲明
Swift可選鏈可替代強(qiáng)制解析
Swift后綴表達(dá)式
Swift帶標(biāo)簽的語句
Swift屬性要求
Swift連接字符串和字符
Swift自定義運(yùn)算符
Swift類型轉(zhuǎn)換運(yùn)算符
Swift閉包表達(dá)式
Swift枚舉語法
Swift類實(shí)例之間的循環(huán)強(qiáng)引用
Swift字符
Swift復(fù)合賦值
Swift析構(gòu)過程原理
Swift枚舉
Swift結(jié)構(gòu)體聲明
Swift do...while循環(huán)
Swift運(yùn)算符
Swift使用可選鏈調(diào)用子腳本
Swift控制轉(zhuǎn)移語句
Swift前綴表達(dá)式
Swift表達(dá)式模式
Swift開發(fā)環(huán)境設(shè)置
Swift類型約束
Swift while循環(huán)
Swift元組類型
Swift枚舉用例模式
Swift默認(rèn)構(gòu)造器
Swift 方法
Swift委托(代理)模式
Swift類型轉(zhuǎn)換模式
Swift類型方法
Swift方法要求
Swift位運(yùn)算符
Swift下標(biāo)腳本
Swift可選類型
Swift聲明
Swift類型標(biāo)識符
Swift元組
Swift字符串
Swift枚舉聲明
Swift屬性
Swift模塊范圍
Swift泛型
Swift類的繼承和構(gòu)造過程
Swift定義一個類層次作為例子
Swift構(gòu)造過程
Swift泛型函數(shù)
Swift快速入門
Swift注釋
Swift基礎(chǔ)
Swift下標(biāo)腳本選項(xiàng)
Swift數(shù)組類型
Swift關(guān)聯(lián)類型
Swift集合(Collection)類型的賦值和拷貝行為
Swift類型參數(shù)
Swift 類型轉(zhuǎn)換
Swift下標(biāo)腳本語法
Swift計算屬性
Swift方法
Swift檢查類型
Swift標(biāo)識符模式
Swift比較運(yùn)算
Swift 泛型
Swift基本語法
Swift賦值運(yùn)算符
Swift布爾值
Swift位運(yùn)算符
Swift函數(shù)
Swift初始化空字符串
Swift為可選鏈定義模型類
Swift元組模式
Swift通過可選鏈調(diào)用方法
Swift if...else if...else語句
Swift通過擴(kuò)展補(bǔ)充協(xié)議聲明
Swift可選類型(命名型類型)
Swift類型推斷
Swift continue語句
Swift泛型參數(shù)
Swift協(xié)議合成
Swift For循環(huán)
Swift控制流
Swift結(jié)構(gòu)體和枚舉是值類型
Swift函數(shù)類型(參數(shù)類型和返回值類型)
Swift自動引用計數(shù)的工作機(jī)制
Swift fallthrough語句
Swift字符串字面量
Swift運(yùn)算符聲明
Swift函數(shù)
Swift類
Swift類型屬性
Swift表達(dá)式
Swift范圍運(yùn)算符
Swift邏輯運(yùn)算
Swift賦值運(yùn)算符
Swift if語句
Swift數(shù)組
Swift枚舉
Swift循環(huán)
Swift擴(kuò)展
Swift檢驗(yàn)協(xié)議的一致性
Swift解決實(shí)例之間的循環(huán)強(qiáng)引用
Swift整數(shù)
Swift函數(shù)聲明
Swift嵌套類型擴(kuò)展
Swift 下標(biāo)
Swift可選協(xié)議要求
Swift子類生成
Swift變量
Swift計算型屬性
Swift 可選鏈
Swift嵌套類型實(shí)例
Swift類型繼承子句
Swift教程
Swift析構(gòu)函數(shù)操作
Swift存儲型屬性的初始賦值
Swift類和結(jié)構(gòu)體的選擇
Swift類型
Swift數(shù)組
Swift相關(guān)值
Swift向下轉(zhuǎn)型
Swift特性
Swift屬性監(jiān)視器
Swift語法結(jié)構(gòu)
Swift尾隨閉包
Swift字典
Swift代碼塊
Swift其它運(yùn)算符
Swift嵌套類型的引用
Swift Where語句
Swift關(guān)鍵字
Swift數(shù)值運(yùn)算
Swift集合類型 (Collection Types)
Swift通配符模式
Swift運(yùn)算符
Swift字面量
Swift常量聲明
Swift元類型
Swift字面量
Swift初始化
Swift鏈接可選返回值的方法
Swift值綁定模式
Swift隱式解析可選類型
Swift嵌套 if 語句
Swift大寫和小寫字符串
Swift構(gòu)造器
Swift for-in循環(huán)
Swift常量和變量

Swift快速入門

Swift是蘋果的品牌新的編程語言,在2014年WWDC(蘋果開發(fā)者大會)上發(fā)布的編程語言。

隨著Swift語言的發(fā)布,蘋果也發(fā)布了一個出色的SWIFT的參考指南,這里強(qiáng)烈推薦。

但是這個學(xué)習(xí)指南又長又瘦!所以,如果沒有很多的時間,只是想快速學(xué)習(xí)Swift,那么本教程就是為你準(zhǔn)備的。

本 Swift 教程將需要大約25分鐘學(xué)習(xí),給出 Swift 語言一個快速瀏覽,包括變量,控制流,類等以及更多的最佳實(shí)踐。

對于本Swift教程,需要Xcode最新版本(在寫這篇Swift教程的時候使用的是Xcode 6.1.1)。學(xué)習(xí)本教程之前不需要任何Swift和Objective-C的經(jīng)驗(yàn),但如果有一些編程經(jīng)驗(yàn),但這會對理解和學(xué)習(xí)有幫助。

注意: 請確保有最新的Xcode(在Mac App Store檢查以確保)。Swift正在發(fā)生迅速的變化,我們正在竭盡所能為每一個測試版更新本教程; 代碼可能無法正常工作在舊版本的Xcode中的或預(yù)發(fā)行版本中。

Playgrounds簡介

啟動 Xcode 6, 并轉(zhuǎn)到 File\New\File. 選擇 iOS\Source\Playground, 并點(diǎn)擊 Next.

955315.png

命名文件為 SwiftTutorial.playground, 并點(diǎn)擊 Create, 并保存在一個方便的地方. 刪除其它不用的文件,以保持一個干凈的文件目錄.

playground 是一種文件類型,并且允許測試 Swift 代碼, 可以側(cè)邊欄查看每一行的結(jié)果. 例如:添加以下行到 playground 中:

let tutorialTeam = 60
let editorialTeam = 17
let totalTeam = tutorialTeam + editorialTeam

當(dāng)編寫輸入這些行,會看到側(cè)邊欄上的每一行的結(jié)果。是不是很方便?

Playgrounds是學(xué)習(xí)Swift一個很好的方式(比如這個Swift教程)來試驗(yàn)新的API,原型代碼或算法,或可視化繪制代碼。 在本Swift教程的其余部分,將使用 playground。

注意: 在這一點(diǎn)上,建議拖動playground文件(SwiftTutorial.playground)到OS X Dock中。

通過這種方式,可以測試一些代碼,Swift使用此文件作為一個快速的暫存器。 當(dāng)然,對于這個工作,必須有playground在一個地方,不能隨便移動它。

Swift變量VS常量

嘗試添加下面一行到 playground 的底部:

totalTeam += 1

當(dāng)加入這一行,會發(fā)現(xiàn)有一個錯誤。 這是因?yàn)?totalTeam 是一個常數(shù),這意味著它的值永遠(yuǎn)不會改變。Swift中使用關(guān)鍵字 let 聲明常數(shù)。

如果想要 totalTeam 是一個變量,它的值可以隨時被改變 - 聲明它需要用不同的關(guān)鍵字: var。

要做到這一點(diǎn),初始化 totalTeam 使用以下行來替換之前的聲明:

var totalTeam = tutorialTeam + editorialTeam

現(xiàn)在它能正常工作了!可能就會像你自己認(rèn)為的那樣了,“為什么不使用var聲明一切呢,無需有那么多的限制?”

好吧,使用 let 來聲明一個常量是最好的做法,因?yàn)檫@允許編譯器進(jìn)行優(yōu)化。所以請記?。罕M可能使用 let 來聲明常量!

顯式與推斷輸入

到目前為止,還沒有明確設(shè)置這些常量和變量的類型,因?yàn)榫幾g器有足夠的信息來自動推斷出它。

例如,設(shè)置 tutorialTeam 為 56,編譯器知道56是一個int類型,所以它會自動設(shè)置oftutorialTeam類型為int。

但是,如果你想要也可以設(shè)置明確類型。嘗試通過設(shè)置tutorialTeam的類型如以下的行:

let tutorialTeam: Int = 60

如果不知道明確類型,或者讓編譯器推斷類型并自動設(shè)置。這是比較好的做法,可在自動情況下讓編譯器推斷出類型,因?yàn)檫@是 Swift 的主要優(yōu)勢之一:簡潔,易于代碼閱讀。

因?yàn)檫@個,切換回之前的那行使用推斷輸入(自動識別類型):

let tutorialTeam = 60

Swift基本類型和控制流

到目前為止,已經(jīng)看到了 Int 的解釋,這是Swift用于整數(shù)值類型的例子,但是還有更多。

嘗試使用一些基本類型,下面每個部分粘貼在 playground 的底部。

Floats 和 Doubles

let priceInferred = 19.99
let priceExplicit: Double = 19.99

有兩種類型的小數(shù)點(diǎn)值,如:Float 和 Double。Double有更多的精確度, 并且默認(rèn)是十進(jìn)制值。這意味著 priceInferred 是 Double  類型。

Bools

let onSaleInferred = true
let onSaleExplicit: Bool = false

請注意,在 Swift 中使用 true/false 作為布爾值(在 Objective-C 中使用 YES/NO ,所以它們有點(diǎn)不同)。

Strings

let nameInferred = "Whoopie Cushion"
let nameExplicit: String = "Whoopie Cushion"

字符串是如你所期望那樣,但請注意,不再像在 Objective-C 中使用 @ 符號了。

if語句和字符串插值

if onSaleInferred {
  println("\(nameInferred) on sale for \(priceInferred)!")
} else {
  println("\(nameInferred) at regular price: \(priceInferred)!")
}

這是一個if語句的一個例子,就像在其它的編程語言一樣。條件的括號是可選的,大括號是必需的,即使只有1行語句。

這里說明一個叫做字符串內(nèi)插的新的技術(shù)的一個例子。在Swift中每當(dāng)想要替換字符串中東西,只需使用此語法:\(表達(dá)式)。

在這一點(diǎn)上,可以看到在側(cè)邊欄中 println 的結(jié)果,由于空間有限它可能不好看到。要查看輸出,將鼠標(biāo)移動到該行,并單擊出現(xiàn)的眼珠子(圖標(biāo)):

002b_Eyeball

還有一個可以看到輸出方法。去到Xcode的主菜單,然后選擇 View\Assistant Editor\Show Assistant Editor.

003_Assistant_Editor

助理編輯器會告訴你的代碼中任何println語句的結(jié)果,并將結(jié)果值顯示在一個方便的地方,這往往比使用鼠標(biāo)放在每一行更容易。

這里是本教程到這里的 playground 文件 內(nèi)容。

類與方法

在Swift開發(fā)中會創(chuàng)建類和方法,這是最常見的作法,讓我們來看看!

首先,刪除在playground文件的一切內(nèi)容,以便可以在一個干凈的文件中開始新的代碼編寫。

接下來,將創(chuàng)建一個小費(fèi)計算器類,以幫助描繪餐廳。 一次添加一小塊代碼,在這里將一步一步地解釋。

// 1
class TipCalculator {

}

要創(chuàng)建一個類,只需在class關(guān)鍵字后輸入類的名稱。然后,類的主體使用一個大括號。

如果是繼承另一個類,使用一個 :符號,后面是繼承的類的名稱。請注意,不一定需要繼承(不像在Objective-C,在那里必須繼承NSObject 之類的東西或派生自NSObject)。

添加以下代碼在大括號內(nèi):

  // 2
  let total: Double
  let taxPct: Double
  let subtotal: Double

添加這些后會出現(xiàn)一些錯誤,但不用擔(dān)心,接下來很快就會解決這些問題。

這就是如何在一個類中創(chuàng)建屬性 – 和創(chuàng)建變量或常數(shù)的方式相同。在這里,將創(chuàng)建三個常量的屬性 – 一個是法案的總額(稅后), 一個用于應(yīng)用到法案的稅收比例,一個用于法案的小計(稅前)。

請注意,任何屬性當(dāng)聲明它們時,聲明必須為它們設(shè)置初始值,或者在初始化時 –這就是為什么當(dāng)前會有錯誤。如果不希望為屬性設(shè)置初始值,必須聲明它們作為可選(更多,在未來的教程)。

在之前創(chuàng)建的塊之后添加代碼(花括號內(nèi)):

  // 3
  init(total: Double, taxPct: Double) {
    self.total = total
    self.taxPct = taxPct
    subtotal = total / (taxPct + 1)
  }

這將為類創(chuàng)建一個初始化器并使用兩個參數(shù)。初始化器在 Swift 的名稱總是為 init – 但可以有多個(如果必要的話),可采用不同的參數(shù)。

請注意,這里已經(jīng)給這個方法使用了參數(shù),與這個類的屬性的名稱相同。正因?yàn)槿绱?,需要通過將自身前綴在屬性之前,以區(qū)分兩者

請注意,由于沒有 subtotal 屬性,所以不會有名稱沖突,不需要添加 self 關(guān)鍵字, 因?yàn)榫幾g器可以自動推斷。

注意: 如果想知道 subtotal = total / (tipPct + 1) 計算來自:
(subtotal * taxPct) + subtotal = total
subtotal * (taxPct + 1) =
            
上一篇:Swift比較運(yùn)算下一篇:Swift 泛型