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