Copyright ©2021 by AppCoda Limited

版權所有, 未經出版商書面許可,不得以任何方式使用,複製,存儲或傳播本書的任何內容。

AppCoda Limited 出版

讀者推薦

「因為本書我找到了一個實習機會與一份工作,跟著本書學習一週後,我立即能夠開發自己的 App !四個月後,我獲得了 Ancestry 所提供的實習機會,成為一個 iOS 開發者,這真的是我做過最好的一項投資。」

- Adriana,Ancestry iOS 開發者

「 基礎與進階這兩本書的內容可以了解所有 App 的設計、程式語法、測試與發佈的觀念, 你需要的是意。」

- Rich Gabrielli

「我已經發表了 8Cafe 與 8Books App,這些App 都是啟蒙於 AppCoda Swift iOS 這本優秀的書,很高興跟你的團隊一起學習發展,事實上,我的許多App / 遊戲的靈感與技術來自於你的基礎與進階的 Swift 著作,對我與許多的開發者而言,你的才華、知識、專業與不吝分享,簡直是上天所恩賜的禮物。」

- Mazen Kilani, creator of 8Cafe

「我開發 iOS App 至今大約一年的時間,這裡非常感謝 AppCoda 團隊,我購買 Swift 一書後,快速增強了我的生產力,並瞭解了整個 Xcode 與 iOS 的開發程序。所學到的比起我在決定購買使用 AppCoda 的書籍之前,花了許多時間透過在 StackOverflow 與 Github 搜尋學習來得多。所有的資訊都會更新且精確,內容易於閱讀與遵循,書中所用的範例專案也非常棒。我迫不及待強力推薦此書,若是你想要啟動學習Swift 的話,不用再等了。」

- David Gagne,Bartender.live 作者

「AppCoda 的書令人非常激賞,內容寫得非常清楚,假設沒有任何概念,書中的內容會鼓勵你自行思考並吸收這些觀念,沒有其他比這更詳盡的學習資源了。」

- 日本 Sheehan,Ingot LLC

「這本書寫得非常好,簡潔有力,書中的範例非常棒且貼近真實的應用。幫助我完成第一個App,並於 App Store 上架,內容給我許多進一步強化與更新App 的想法。我將它作為我的參考指南,也很感謝每當Swift 與 iOS 有做變更時,都能收到更新。」

- David Greenfield,ThreadABead 作者

「非常感謝寫了這麼棒的書!這本書幫助我開發了第一個真正的App,自從在 App Store 上架後,不到兩個月就賺進了美金 200 元,我也獲得了一個在行動部門進行軟體開發的工作。再次感謝這本超棒的書,如果有人問我是怎麼學習程式的,我一定會盡力推廣此書。」

- Rody Davis,Pitch Pipe with Pitch Assistant 開發者

「這本書寫得很棒!我在 Udemy 有購買另一個課程,但是講師並沒有太多開發者的背景,而我知道作者是一個有經驗的開發者。此外,內容的說明非常清楚。」

- Carlos Aguilar,Roomhints Interior Design Ideas 作者

「多年來,我一直在尋找良好的學習資源,來幫助我加強 App 的開發技巧。而這本書真的拯救了我。這是我寫程式十年來所讀過的書中,說明得最好的一本。內容不但容易理解,且切中所有要點。說再多的謝謝,都不足以表達我對於作者撰寫本書的感激之情。」

- Eric Mwangi

「這本書以許多的範例來闡釋,對於有經驗但想入門 Swift 的開發者來說,也非常有幫助。」

- Howard Smith, Flickitt

"「沒有這本書,我無法成為一個iOS 開發者。」

- Changho Lee, SY Energy

「我想要學習以 Swift 來開發 iOS 程式。而我找到了這本書,此書絕對是學習 iOS App 開發的絕佳方式,當你有些程式背景,在幾天內就能夠做出一些 App,若你不是的話,一 樣也能夠學會 App 的開發。」

- Leon Pillich

"「這是我在網路上所找到的最佳書籍。內容非常容易理解,三年前我開始學習寫程式, 而今我的 App 能夠完成,都是因為這本書。」

- Aziz,Kuwait Concepts 工程師

「有見解、實用與學習動機。這本書充滿知識性與有深度的主題,書中針對 iOS 開發的各個面向提供了提示與技巧,並鼓勵學生/讀者能夠持續往前,不會害怕去深入理解觀念,真的是太棒了!」

- Moin Ahmad,Guess Animals 作者

「這本書教導我們如何建構我們想要的 App。書中的內容規劃得很好,每一章的篇幅拿捏得恰到好處,不會太過冗長而無法消化,想要學習開發第一支 App 並進階學習的話,我強烈推薦這內容超棒的好書。」

- Stephen Donnelly,Rascalbiscuit 總監

「我試過多種學習資源,包括了史丹佛的課程,雖然我已經從其他資源學過了如自動佈局、委派、Segue 等主題,但這是第一個讓我能夠真正理解這些內容的一本書。」

- Nico van der Linden,Expertum SAP 開發者

「過去三年以來,我已經購買了超過十多本有關 Objective C 與 Swift 的書。我目前在一所高中教授電腦科學先修課程,我主要是教授 Java 語言,不過我也教授其他數種程式語言,所以我會收藏大量的教科書,雖然我過去幾年所購買的其他書籍與線上教學影片的內容也很不錯,但是我發現 AppCoda 所出版的書更勝於這些教材。作者在書中對於某個主題的表達方式,就好像我在課堂上接受他的指導一樣,而不只是閱讀書面上的文字而已。最棒的是他的寫作方式就好像他正在跟你說話一樣,而不只是單純的介紹。」

- Ricky Martin,Gulf Coast 高中

「這是我最初在學習 Swift 時所找到學習書籍之一。作為一個初學者,這本書非常容易學習與理解。整本書以貼近真實生活的範例來建構App,這種學習方法真是太天才了,最後也能夠實用它。我學習了很多,也運用了很多其中的內容在我的 App 中。我發現我會常常會回去參考此書,這真是一本很棒的作品。」

- Bill Harned,Percent Off 作者

「 iOS 開發最棒的書籍之一,絕佳的內容編排,容易跟著實作,是很棒的開發學習良伴。」

- Ali Akkawi,iOS 與 Android 行動 App 自由工作者

「我喜歡本書,內容編排得非常有結構。幾乎涵蓋了最新的觀念。」

- Barath V,首席iOS 開發人員,Robert Bosch LLC

「我已經購買過 iOS 11 Swift 程式入門與進階版一書,我是由 Java 開發轉成 iOS 的行動應用開發者,這些書真的幫助我學到如何建構行動應用程式,在入門版中的 FoodPin 應用程式範例,可以學到建立一個 App 所用到的常用元件,這是一個很棒的學習方式,即使 我已經從事 iOS App 開發工作三年之久,我還是常常回來參考 AppCoda Swift 的書籍。」

- Stacy Chang

「或許沒有這本書,我也能完成我的 App ,但花費的時間可能會為更久,也許自己都不會相信我可以做得這麼好,如果沒有這本書,我的 App 也不會出現在 App Store 了,以上所述為真,繼續加油吧!」

- Marc Estwick

序言

多年以前,人們會問到:「Swift 已經適合進行App 開發了嗎?」

現在每個人都知道 Swift 是開發 iOS App 的程式語言。

我非常喜愛這個語言,並非是因為我以教授 Swift 程式語言維生,而想要藉此讓你購買我的課程/書籍。我已經有15 年的 程式開發經驗,熟悉多種程式語言。Swift 是我目前最喜歡的語言,這個程式語言設計完善,具有簡潔的語法,同時也很容易學習。比起以前的 Objective-C 語言來說,Swift 語言讓 iOS App 開發更具生產力。

在 2014 年6 月,Apple 推出了Swift,並經過了幾次的改版。很快地,蘋果公司已經推出了5.3 版本的程式語言和 Xcode 12,並加上了更多的功能。從第一版出來至今 6 年多,swift 已經不再是一個全新的程式語言,Swift 現在已經更加穩定且成熟,適合開發 任何 iOS、macOS、watchOS 以及tvOS 等應用程式,許多公司,例如 Lyft、LinkedIn 與 Mozilla 已經開始採用 Swift 來開發 App。不論你是計畫要開發下一個 iOS App 或者以 iOS App 開發做為你的事業 ,Swift 毫無疑問是必要首選的程式語言。

本書介紹了學習 iOS App 開發所必須學會的內容。請記得,Swift 只是一種程式語言。要開發App,你需要的不只是學習程式語言而已,還有更多需要學習的內容。除了Swift 的介紹,本書將會教導你如何使用 Xcode 來佈局使用者介面,並熟悉 iOS 14 SDK 的基本 API。最重要的是,你可從無到有開發一個真正的 App,來學習 Swift 程式。

對於初學者或者毫無程式背景的人而言,你可能會想問:是否自己也能學習 Swift 程式,並建立一個真正的 App。

自從 Swift 釋出之後,我便以 Swift 來寫程式。Swift 已經更為平易近人了,對於新手來說,Swift 比Objective-C 更容易學習。雖然不是每個人都能成為一個很棒的開發者,但是我相信每個人都能夠學習程式,並使用Swift 來開發App。你所需要做的便是努力學習、 下定決心以及願意採取行動。

我在 8 年前創辦 AppCoda,然後開始每週規律地刊登 iOS 程式教學。從那時候起到現在,我已經出版了數本 iOS App 開發的書籍。一開始,我認為想要學習程式開發的是那些已經具備程式開發經驗與技術背景的人。有趣的是,來自各種背景的人都充滿熱情地想要 建立自己的App。我有一位法國讀者,他是外科醫生,其本身毫無程式經驗而開始了他的第一個 App,他的 App 是讓所有人都能免費分享廣告活動的資訊。另外一位讀者是飛行員,他在幾年前開始學習 iOS 程式語言,現在他已經建立了一個可以讓自己以及其他飛行 員能夠使用的 iPhone App。而 Boozy 是一個能夠尋找快樂時光、每日優惠以及早午餐的 App,這個 App 是由一位法律學校輟學的學生所開發的。由於 Boozy App 的開發者在華盛頓哥倫比亞特區找不到一個可以喝飲料的好去處,所以她決定做一個 App 來滿足這個需 求。當她有了這個想法時,還不知道如何寫程式,於是她從頭開始慢慢地跟著我們一起學習。

我時常收到有人想要建立一個 App 的 Email。這些 Email 的內容,通常是像這樣:「我有一個很棒的點子,我要從哪裡開始進行?但是我沒有程式開發技術。我可以從無到有來建立一個 App 嗎?」

我從這些令人感到激勵的故事中學到,你不需要具備電腦科學或工程的學位才能夠建立一個 App。這些讀者都有一個共同點,就是他們都會確實採取行動,努力工作讓一切成真,而這就是你所需要的。

那麼,你已經有開發一個App 的點子了嗎?我相信你一定可以自己做出一個 App。請記住,當你真的對建立App 這件事充滿熱情的話,沒有任何事情可以阻止你學習並達成目標。在此引用《最後的演說》(Last Lecture )中一句我最喜歡的格言之一作為總結:

Brick walls are there for a reason: they let us prove how badly we want things.

人生中那些豎立在前面阻擋你的牆,都是有原因的。它讓我們證明有多渴望得到所想 要的。

- Randy Pausch

最後,感謝選擇本書的朋友,我希望你會喜愛閱讀本書,並在 App Store 推出你的第一 個 App。若是你願意與我分享你的第一個 App,可以透過這個 [email protected] 來告知我。我期望得到你的消息。

Simon Ng
AppCoda 創辦人

關於本書

知道許多讀者有建立 App 的點子,卻不知道該如何著手的情形,而本書就是以這樣的想法為基礎來撰寫的。本書內容介紹了Swift 程式語言的全部觀念,你會學習到如何從頭開始建立一個真實世界的 App。你會先學習 Swift 的基礎,然後規劃 App 的原型,接著跟著每一章的內容來加入一些功能。學習完本書內容之後,你可得到一個真正的 App。在這些過程中,你將學習到如何在表格視圖中展示資料、自訂Cell 的外觀與改善其質感、使用堆疊視圖設計 UI、建立動畫、處理地圖、建立自適應 UI、在本地端資料庫儲存資料、上傳資料至iCloud、使用 TestFlight 來安排 Beta 版的測試等。

這本書的特色是,有許多需要親自動手做的練習與專案。你將會有機會寫程式、修復Bug,並測試你的 App。雖然這包含了許多的工作,但絕對是一個值得的體驗。我相信本書會讓你熟悉 Swift 5.3、Xcode 12 與 iOS 14 程式。最重要的是,你將能夠開發一個 App 並發布至App Store。

閱讀對象

本書的閱讀對象是給沒有任何程式經驗、想要學習 Swift 程式語言的初學者。不論你是想學習新程式語言的程式設計師,或者是想要將你的設計轉換為 iOS App 的設計師,又或者是一位想要學習寫程式的企業家,這本書絕對是你的首選。

我假定你是已經熟悉使用 macOS 與 iOS 的讀者。

SwiftUI 與 UIKit

Apple 於 2019 年釋出了新的 UI 框架,稱作 SwiftUI,一個常見的問題是,是否該學習使用 SwiftUI 或者 UIKit( Storyboard ) 來建構使用者介面。

我認為兩者皆需要,尤其目標是成為一個專業的 iOS 開發者或以此專業來求職。大部分於 App Store 上的 App 都是以 UIKit 來開發。你可能在職場上會碰到使用 UIKit 所開發的 App。即使不打算以此來找工作, 因為SwiftUI 尚未能含括所有 UI 元件。在某些情況下,你可能需要利用 UIKit 所提供的元件,因此我建議在這個過渡時期,這兩種框架皆需要學習。

本書的重點在於學習如何使用 UIKit 與 Storyboard 來建立使用者介面,如果你想要學習 SwiftUI 框架的話,你可以參考我們的 「iOS App 程式開發實務攻略:快速精通 SwiftUI」.

results matching ""

    No results matching ""