跟著項(xiàng)目學(xué)iOS應(yīng)用開發(fā):基于Swift 4
定 價(jià):89 元
叢書名:華章科技
- 作者:劉銘 陳雪峰 李鋼 秦瓊
- 出版時(shí)間:2018/9/1
- ISBN:9787111609070
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TN929.53
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
本書通過制作真實(shí)世界的應(yīng)用程序來幫助讀者學(xué)習(xí)Swift4編程知識(shí)。例如木琴彈奏、問答測(cè)試、骰子游戲、聊天、待辦事項(xiàng)類應(yīng)用和天氣應(yīng)用。另外,書中還包括蘋果的Core-ML智能應(yīng)用程序與機(jī)器學(xué)習(xí),通過學(xué)習(xí)這些內(nèi)容,你將可以構(gòu)建圖像識(shí)別應(yīng)用程序。全書各個(gè)部分的功能實(shí)現(xiàn)都基于由淺入深、循序漸進(jìn)的原則,讓廣大讀者在實(shí)踐操作的過程中不知不覺地學(xué)習(xí)新方法,掌握新技能。
(1)作者是擁有10余年開發(fā)經(jīng)驗(yàn)的iOS技術(shù)專家,著作頗豐,教學(xué)經(jīng)驗(yàn)豐富。
(2)指導(dǎo)讀者用全新的iOS系統(tǒng)、XCode工具和Swift語言開發(fā)iOS應(yīng)用。
(3)摒棄傳統(tǒng)入門書講解方式,項(xiàng)目和任務(wù)驅(qū)動(dòng),逐步引導(dǎo)讀者在實(shí)戰(zhàn)中掌握iOS應(yīng)用開發(fā)的工具、方法和技巧
(4)由淺入深、循序漸進(jìn),核心知識(shí)點(diǎn)蘊(yùn)藏在10余個(gè)設(shè)計(jì)精巧的案例中,零基礎(chǔ)讀者也能開發(fā)出高質(zhì)量應(yīng)用。
為什么要寫這本書
從目前來看,iOS是全球最流行的移動(dòng)端操作系統(tǒng),這已經(jīng)成為不爭(zhēng)的事實(shí)。同時(shí)近年來蘋果公司不斷更新和完善供iOS OS X應(yīng)用編程的開發(fā)語言Swift,使Swift在未來賺足眼球成為可能。作為一名iOS開發(fā)者,相信對(duì)于Swift語言并不陌生。使用Swift語言可以高效開發(fā)出高質(zhì)量的移動(dòng)應(yīng)用。如果開發(fā)人員現(xiàn)在還不開始學(xué)習(xí)Swift,還在留戀著Objective-C的話,恐怕用不了多久,就會(huì)被Swift所帶來的技術(shù)革新無情淘汰。另一方面,iOS本身也在快速地進(jìn)行技術(shù)改進(jìn)。與以往不同,iOS 10、iOS 11引入和開放了許多別出心裁的新技術(shù),如Core-ML、ARKit等。如果開發(fā)人員能夠充分利用這些新技術(shù),就可以讓自己的應(yīng)用給用戶帶來前所未有的使用體驗(yàn),進(jìn)而在移動(dòng)應(yīng)用時(shí)代取得一個(gè)制高點(diǎn)。
Swift自身的發(fā)展太快了,很多程序員在將自己的項(xiàng)目從Swift 2遷移到Swift 3的時(shí)候就遇到了很多頭痛的問題。希望像這樣“毀滅性”的升級(jí)是最后一次。好在從Swift 3到Swift 4的變化并不大。通過本書,讀者可以將學(xué)到的知識(shí)點(diǎn)運(yùn)用到實(shí)戰(zhàn)中去,真正地將所有知識(shí)點(diǎn)融會(huì)貫通,從而打通所有“脈絡(luò)”,在編寫程序代碼的時(shí)候達(dá)到“思如泉涌”的效果。
本書結(jié)構(gòu)
本書通過制作真實(shí)世界的應(yīng)用程序來幫助讀者學(xué)習(xí)Swift 4編程知識(shí)。例如木琴彈奏、問答測(cè)試、骰子游戲、聊天應(yīng)用、待辦事項(xiàng)類應(yīng)用(TODO)和天氣應(yīng)用。另外,書中還包括蘋果公司的Core-ML智能應(yīng)用程序與機(jī)器學(xué)習(xí)的相關(guān)內(nèi)容,通過學(xué)習(xí)這些內(nèi)容你將可以構(gòu)建圖像識(shí)別應(yīng)用程序。
本書是根據(jù)由易到難的順序來安排應(yīng)用程序項(xiàng)目的,具體如下。
第1章:介紹Xcode的安裝,認(rèn)識(shí)Xcode的用戶界面及主要面板功能,帶領(lǐng)大家創(chuàng)建Hello World應(yīng)用。
第2章:使用Interface Builder簡單搭建用戶界面,并制作I am rich應(yīng)用。
第3章:介紹如何在iPhone物理真機(jī)上安裝應(yīng)用程序。
第4章:通過制作擲骰子應(yīng)用,掌握如何通過代碼控制界面元素,以及當(dāng)用戶與界面元素發(fā)生交互時(shí)如何給代碼發(fā)送消息。
第5章:Swift語言的基礎(chǔ)知識(shí)講解。
第6章:介紹如何利用Stack Overflow網(wǎng)站解決在開發(fā)時(shí)所遇到的問題,并利用AVAudioPlayer類在應(yīng)用中播放聲音。
第7章:介紹MVC設(shè)計(jì)模式,并制作問答測(cè)試應(yīng)用程序。
第8章:學(xué)習(xí)自動(dòng)布局的相關(guān)知識(shí),并對(duì)擲骰子應(yīng)用進(jìn)行迭代更新。
第9章:介紹類與對(duì)象的相關(guān)知識(shí)。
第10章:通過CocoaPods安裝第三方鏈接庫,并通過相關(guān)API從遠(yuǎn)程WebService獲取所需要的數(shù)據(jù)。
第11章:利用目前國內(nèi)流行的云端數(shù)據(jù)庫建立聊天應(yīng)用。
第12章:介紹版本控制的相關(guān)知識(shí)。
第13章和第14章:利用CoreData、Realm等數(shù)據(jù)存儲(chǔ)工具實(shí)現(xiàn)類TODO應(yīng)用程序。
第15章:利用機(jī)器學(xué)習(xí)和Core-ML的相關(guān)知識(shí),構(gòu)建圖像識(shí)別應(yīng)用程序。
各個(gè)部分的功能實(shí)現(xiàn)都基于由淺入深、循序漸進(jìn)的原則,讓廣大讀者在實(shí)踐操作的過程中不知不覺地學(xué)習(xí)新方法,掌握新技能。
本書面向的讀者
本書適合具備以下幾方面知識(shí)和硬件條件的群體閱讀。
有面向?qū)ο蟮拈_發(fā)經(jīng)驗(yàn),熟悉類、實(shí)例、方法、封裝、繼承、重寫等概念。
有Swift的開發(fā)經(jīng)驗(yàn)。
有MVC設(shè)計(jì)模式的開發(fā)經(jīng)驗(yàn)。
有簡單圖像處理的經(jīng)驗(yàn)。
有一臺(tái)Intel架構(gòu)的Mac電腦(Macbook Pro、Macbook Air、Mac Pro或Mac Mini)。
如何閱讀本書
每個(gè)人的閱讀習(xí)慣都不相同,而且本書并不是一本從Swift語法講起的基礎(chǔ)“開荒”書。所以我還是建議你先從Swift 3.X的語法書學(xué)起,在有了一定的Swift語言基礎(chǔ)以后,再開始閱讀本書,跟著實(shí)踐操作一步步完成各章節(jié)的項(xiàng)目。
在閱讀本書的過程中,你可能會(huì)遇到語法錯(cuò)誤、編譯錯(cuò)誤、網(wǎng)絡(luò)連接錯(cuò)誤等情況,不用著急,根據(jù)調(diào)試控制臺(tái)中的錯(cuò)誤提示,去分析產(chǎn)生Bug的原因,或者通過與本書所提供的源碼進(jìn)行對(duì)比,找出問題所在。
勘誤和支持
由于水平有限,編寫時(shí)間倉促,書中難免會(huì)出現(xiàn)一些錯(cuò)誤或者不準(zhǔn)確的地方,懇請(qǐng)讀者批評(píng)指正。書中的全部源文件可以從GitHub(https://github.com/liumingl/iOS-11-Swift-4-Tutorial)下載,也可以從我的網(wǎng)站(劉銘.cn)下載。如果你有任何寶貴意見或建議,歡迎發(fā)送郵件至liuming_cn@qq.com,期待得到你們的真摯反饋。
致謝
首先要感謝偉大到可以改變這個(gè)世界的Steven Jobs,他的精神對(duì)我產(chǎn)生了非常大的影響。
其次要感謝機(jī)械工業(yè)出版社華章公司的編輯楊福川老師和小藝?yán)蠋,在這段時(shí)間中始終支持我的寫作,你們的鼓勵(lì)和幫助使我順利完成全部書稿。
最后感謝我的爸爸、媽媽、劉穎、劉懷羽、張燕、王海燕,感謝你們對(duì)我的支持與幫助,并時(shí)時(shí)刻刻給我信心和力量!
謹(jǐn)以此書獻(xiàn)給我最親愛的家人,以及眾多熱愛iOS的朋友們!
劉銘
劉銘
iOS技術(shù)專家,從事軟件開發(fā)10余年,在iOS開發(fā)和Mac應(yīng)用開發(fā)方面積累了豐富的實(shí)戰(zhàn)經(jīng)驗(yàn)。
樂于分享,先后受邀在VeryCD、ITCast、極客學(xué)院等平臺(tái)發(fā)布過PHP、Flex和iOS方面的視頻教程,在社區(qū)里有很大的知名度和影響力。
著作頗豐,先后出版了《iOS 6應(yīng)用開發(fā)實(shí)戰(zhàn)》、《iOS10快速開發(fā):18天零基礎(chǔ)開發(fā)一個(gè)商業(yè)應(yīng)用》等4著作,深受讀者歡迎。
QQ交流群:劉老師的iOS小屋(群號(hào):230443535)
前 言
第1章 開始iOS 11和Swift 4編程 1
1.1 iOS 11應(yīng)用程序開發(fā)工具 1
1.2 下載安裝Xcode 3
1.3 瀏覽 Xcode 開發(fā)環(huán)境 4
1.4 初步剖析iOS應(yīng)用程序 10
第2章 Interface Builder 介紹 12
2.1 如何創(chuàng)建 Xcode 項(xiàng)目 13
2.2 使用故事板創(chuàng)建用戶界面 13
2.3 如何定位用戶界面元素 16
2.4 導(dǎo)入圖像素材到Xcode項(xiàng)目 18
2.5 運(yùn)行并測(cè)試項(xiàng)目 20
第3章 在iPhone真機(jī)上安裝應(yīng)用 22
3.1 使用Xcode將項(xiàng)目下載到物理真機(jī) 22
3.2 通過GitHub下載項(xiàng)目樣例代碼 25
第4章 構(gòu)建簡單的擲骰子游戲 29
4.1 如何設(shè)計(jì)擲骰子游戲 29
4.2 建立代碼與界面元素的關(guān)聯(lián) 32
4.3 IBOutlets/IBActions調(diào)試 35
4.4 使用Swift創(chuàng)建隨機(jī)數(shù) 37
4.5 數(shù)據(jù)類型、常量、變量 39
4.6 解決錯(cuò)誤:“The Maximum Number of Provisioning Profiles Reached” 42
4.7 通過數(shù)組改變顯示方式 43
4.8 為項(xiàng)目添加運(yùn)動(dòng)檢測(cè)功能 46
4.9 挑戰(zhàn):Swift 數(shù)據(jù)類型、變量和數(shù)組 47
第5章 Swift程序設(shè)計(jì)基礎(chǔ) 51
5.1 備注、打印語句和調(diào)試控制臺(tái) 51
5.2 Swift函數(shù): Part 1 - 簡單函數(shù) 54
5.3 Swift函數(shù): Part 2 - 函數(shù)的輸入 56
5.4 Swift函數(shù): Part 3 - 函數(shù)的輸出 58
5.5 Swift 中的條件語句 (IF/ELSE) 59
5.6 挑戰(zhàn):在Playgrounds中制作人體體重指數(shù)計(jì)算器 62
5.7 Swift 中的循環(huán)語句 63
5.8 在程序中使用循環(huán) 64
5.9 挑戰(zhàn):腦筋急轉(zhuǎn)彎 68
第6章 利用iOS API制作音樂應(yīng)用 71
6.1 使用故事板中的Tags 71
6.2 學(xué)會(huì)使用Stack Overflow和Apple Documentation 74
6.3 利用 AVFoundation 播放聲音 82
6.4 Swift 4中的錯(cuò)誤捕獲——Do、Catch和Try 84
6.5 創(chuàng)建一個(gè)播放聲音的方法 86
6.6 讓App每次播放不同的聲音 88
6.7 程序中的“作用域” 89
第7章 使用Model-View-Controller設(shè)計(jì)模式制作小測(cè)驗(yàn)App 92
7.1 初始化Quizzler項(xiàng)目 92
7.2 創(chuàng)建數(shù)據(jù)模型 96
7.3 面向?qū)ο? 98
7.4 創(chuàng)建答題庫類 101
7.5 Model View Controller (MVC) 設(shè)計(jì)模式 102
7.6 初始化第一個(gè)題目 104
7.7 處理后續(xù)題目 106
7.8 使用 Xcode 調(diào)試控制臺(tái) 108
7.9 如何實(shí)現(xiàn)UIAlertController以及彈出窗口給用戶 110
7.10 高級(jí)別的重寫 113
7.11 統(tǒng)計(jì)分?jǐn)?shù) 113
7.12 合并Objective-C代碼到Swift 116
7.13 挑戰(zhàn):制作情商測(cè)試應(yīng)用 119
第8章 iOS的自動(dòng)布局和設(shè)置約束 124
8.1 通過代碼定位UI元素 126
8.2 自動(dòng)布局 128
8.2.1 在界面生成器中實(shí)時(shí)預(yù)覽布局效果 129
8.2.2 使用自動(dòng)布局將square居中 130
8.2.3 解決布局約束的問題 132
8.2.4 另一種預(yù)覽故事板的方式 133
8.2.5 添加一個(gè)標(biāo)簽 135
8.2.6 安全區(qū)域 137
8.2.7 編輯約束 139
8.3 自動(dòng)布局實(shí)戰(zhàn)——設(shè)置約束 139
8.4 挑戰(zhàn)自動(dòng)布局 145
8.5 在自動(dòng)布局中使用堆疊視圖 146
第9章 Swift 4中階知識(shí) 152
9.1 類和對(duì)象 152
9.2 創(chuàng)建全新的類 153
9.3 創(chuàng)建枚舉 155
9.4 根據(jù)類創(chuàng)建一個(gè)對(duì)象 156
9.5 類的初始化 157
9.6 Designated和Convenience初始化方法 158
9.7 創(chuàng)建一個(gè)方法 160
9.8 類的繼承 161
9.9 重寫一個(gè)繼承的方法 162
9.10 Swift語言中的可選 164
第10章 利用Cocoapods、GPS、APIS、 REST制作天氣應(yīng)用 169
10.1 設(shè)置項(xiàng)目 170
10.2 注冊(cè)免費(fèi)的API Key 172
10.3 為什么需要Cocoapods? 173
10.3.1 在你的Mac上安裝和設(shè)置Cocoapods 174
10.3.2 在你的Xcode項(xiàng)目中安裝Pods 176
10.4 設(shè)置Location Manager并從iPhone獲取GPS數(shù)據(jù) 177
10.5 定位權(quán)限 181
10.6 在WeatherViewController中獲取GPS數(shù)據(jù) 184
10.7 委托、字典和API 190
10.7.1 委托 190
10.7.2 字典 190
10.7.3 API 191
10.8 使用Alamofire 192
10.9 JSON以及如何解析JSON 193
10.10 創(chuàng)建氣象數(shù)據(jù)模型 196
10.11 Segues的相關(guān)介紹 201
10.12 在項(xiàng)目中使用委托和協(xié)議 204
10.13 如何在視圖控制器間傳遞數(shù)據(jù) 207
10.14 基于城市名稱的天氣數(shù)據(jù)請(qǐng)求 212
10.15 挑戰(zhàn):利用Cocoapods、REST和APIs構(gòu)建比特幣價(jià)格跟蹤應(yīng)用 213
第11章 利用云端數(shù)據(jù)庫、iOS 動(dòng)畫和高級(jí)Swift特性構(gòu)建聊天應(yīng)用 219
11.1 關(guān)于Bmob 219
11.1.1 在LeanCloud上注冊(cè)賬戶 220
11.1.2 設(shè)置Bmob 220
11.2 保存數(shù)據(jù)到Bmob 222
11.2.1 創(chuàng)建橋接頭文件 222
11.2.2 測(cè)試云端數(shù)據(jù)庫的讀寫 223
11.2.3 在應(yīng)用上注冊(cè)一些用戶 224
11.3 Swift閉包 227
11.4 事件驅(qū)動(dòng)、應(yīng)用程序生存期 231
11.4.1 事件驅(qū)動(dòng)——應(yīng)用運(yùn)行的本質(zhì) 231
11.4.2 應(yīng)用程序的生存期 232
11.4.3 什么是完成處理? 232
11.5 導(dǎo)航控制器是如何工作的? 235
11.6 編寫登錄屏幕代碼 236
11.7 表格視圖 237
11.8 了解UI動(dòng)畫 243
11.9 發(fā)送消息 247
11.10 通過Bmob監(jiān)聽數(shù)據(jù)表的變化 248
11.11 進(jìn)一步完善用戶體驗(yàn)和用戶界面 253
11.11.1 利用Progress Spinner改善用戶體驗(yàn) 253
11.11.2