本機預覽檔,互動功能都能實際操作。上線時請把對應的 block.html 貼進 WordPress 自訂 HTML 區塊,並安裝 100days-snippet.php(樣式與互動都在裡面)。
100 Days of SwiftUI 中文學習筆記
從 Day 0 到 Day 100,一天一篇繁體中文筆記與心得,共 102 篇。零基礎開始,用 Swift 與 SwiftUI 做出真正能上架的 iOS App。
這個系列是什麼
這是我跟著 100 Days of SwiftUI 學習 iOS 開發的繁體中文筆記,101 天課程加 1 篇結語,共 102 篇。原課程由 Paul Hudson 製作、完全免費;這裡放的是我整理過的重點摘要、程式碼範例,以及每天實際卡關的地方。
你會在這裡看到什麼
- 重點摘要:每天的核心觀念用中文重寫,不逐字翻譯。
- 程式碼範例:可以直接貼進 Xcode 跑的 Swift 片段。
- 踩雷紀錄:報錯訊息、卡了多久、最後怎麼解掉。
- 我的心得:哪裡有感、哪裡覺得作者講得不夠清楚。
這裡不會有什麼
- 原課程的完整教材內容與互動測驗(請直接到 Hacking with Swift 做,免費)。
- 付費課程推銷。這 100 天需要的所有資源都是免費的。
我該從第幾天開始?
完全沒寫過程式的人請直接從 Day 0 開始,不用測。如果你有一點基礎,回答下面四題,會得到一個建議的起點與該注意的地方。
測驗結果只存在你的瀏覽器,不會上傳。這是我依照課程結構整理的建議,不是官方分級。
課程地圖:這 101 天在學什麼
整個課程分成三大塊:前 14 天學 Swift 語言,之後用 19 個實作專案學 SwiftUI,中間穿插 7 次複習與獨立挑戰。
| 天數 | 階段 | 主要內容 | 完成後你會 |
|---|---|---|---|
| Day 0 | 準備 | 學習心態、五個核心技能、七個常見錯誤 | 裝好 Xcode,知道該怎麼學 |
| Day 1–14 | Swift 語言基礎 | 變數、集合、流程控制、函式、閉包、結構、類別、協定、可選值 | 看得懂、寫得出 Swift 程式碼 |
| Day 15 | 複習 I | Swift 總複習 | 補掉前 14 天的漏洞 |
| Day 16–24 | SwiftUI 起步 | 專案 1–3:WeSplit、Guess the Flag、視圖與修飾器 | 做出第一批有畫面的 App |
| Day 25 | 複習 II | 里程碑:專案 1–3 | 不看教學自己做一個 App |
| Day 26–34 | 擴充技能 | 專案 4–6:BetterRest、Word Scramble、Animation | 會用 Core ML 與 SwiftUI 動畫 |
| Day 35 | 複習 III | 里程碑:專案 4–6 | 獨立完成含動畫的 App |
| Day 36–46 | 放大規模 | 專案 7–9:iExpense、Moonshot、Navigation | 處理多畫面、狀態與 JSON |
| Day 47–48 | 複習 IV | 里程碑:專案 7–9、拓展視野 | 觀念補強 |
| Day 49–59 | 專注資料 | 專案 10–12:Cupcake Corner、Bookworm、SwiftData | 會抓 API、會存資料 |
| Day 60–61 | 複習 V | 里程碑:專案 10–12、SwiftData 專章 | 資料層打底完成 |
| Day 62–76 | 外部框架 | 專案 13–15:Instafilter、BucketList、Accessibility | 會用 Core Image、MapKit、無障礙 API |
| Day 77–78 | 複習 VI | 里程碑:專案 13–15、MapKit 專章 | 框架整合熟練 |
| Day 79–94 | UI 流程控制 | 專案 16–18:Hot Prospects、Flashzilla、Layout and Geometry | 手勢、觸覺、分頁、自訂版面 |
| Day 95 | 複習 VII | 里程碑:專案 16–18 | 獨立完成大型 App |
| Day 96–99 | 最後一個專案 | 專案 19:SnowSeeker | iPad 最佳化 |
| Day 100–101 | 收尾 | 期末考、結語 | 完成 100 天 |
完整目錄
點開任一階段展開該階段的每一天。已發布的天數可以直接點進去看筆記。
Swift 語言基礎Day 1–14
先學語言本身,還沒碰畫面。變數、集合、流程控制、函式、閉包、物件導向、可選值。
- Day 1變數、常數、字串與數字未發布
- Day 2布林值、字串插值、Checkpoint 1未發布
- Day 3陣列、字典、集合與列舉未發布
- Day 4型別註記、Checkpoint 2未發布
- Day 5if、switch 與三元運算子未發布
- Day 6迴圈、總結、Checkpoint 3未發布
- Day 7函式、參數與回傳值未發布
- Day 8預設值、可拋出錯誤的函式、Checkpoint 4未發布
- Day 9閉包、把函式當參數傳入、Checkpoint 5未發布
- Day 10結構、計算屬性與屬性觀察器未發布
- Day 11存取控制、靜態屬性與方法、Checkpoint 6未發布
- Day 12類別、繼承、Checkpoint 7未發布
- Day 13協定、擴充、Checkpoint 8未發布
- Day 14可選值、nil 合併運算子、Checkpoint 9未發布
複習 IDay 15
14 天塞了很多東西,這天把 Swift 從頭捋一遍。
- Day 15Swift 總複習未發布
SwiftUI 起步Day 16–24
第一次做出有畫面的 App:分帳、猜國旗,以及視圖與修飾器的運作原理。
- Day 16專案 1 WeSplit 分帳 App(一)未發布
- Day 17專案 1 WeSplit 分帳 App(二)未發布
- Day 18專案 1 WeSplit 分帳 App(三)未發布
- Day 19挑戰日:自己做一個單位換算 App未發布
- Day 20專案 2 Guess the Flag 猜國旗(一)未發布
- Day 21專案 2 Guess the Flag 猜國旗(二)未發布
- Day 22專案 2 Guess the Flag 猜國旗(三)未發布
- Day 23專案 3 Views and Modifiers 視圖與修飾器(一)未發布
- Day 24專案 3 Views and Modifiers 視圖與修飾器(二)未發布
複習 IIDay 25
不看教學,自己從零做一個 App。
- Day 25里程碑:專案 1–3 總複習與挑戰未發布
擴充技能Day 26–34
日期處理與 Core ML、清單與字典檔、SwiftUI 動畫三大主題。
- Day 26專案 4 BetterRest 睡眠預測(一)未發布
- Day 27專案 4 BetterRest 睡眠預測(二)未發布
- Day 28專案 4 BetterRest 睡眠預測(三)未發布
- Day 29專案 5 Word Scramble 單字接龍(一)未發布
- Day 30專案 5 Word Scramble 單字接龍(二)未發布
- Day 31專案 5 Word Scramble 單字接龍(三)未發布
- Day 32專案 6 Animation 動畫(一)未發布
- Day 33專案 6 Animation 動畫(二)未發布
- Day 34專案 6 Animation 動畫(三)未發布
複習 IIIDay 35
再一次獨立挑戰,這次要用上動畫。
- Day 35里程碑:專案 4–6 總複習與挑戰未發布
放大到更大的 AppDay 36–46
多畫面、資料傳遞、狀態管理、JSON 解析、導覽架構。
- Day 36專案 7 iExpense 記帳(一)未發布
- Day 37專案 7 iExpense 記帳(二)未發布
- Day 38專案 7 iExpense 記帳(三)未發布
- Day 39專案 8 Moonshot 太空任務(一)未發布
- Day 40專案 8 Moonshot 太空任務(二)未發布
- Day 41專案 8 Moonshot 太空任務(三)未發布
- Day 42專案 8 Moonshot 太空任務(四)未發布
- Day 43專案 9 Navigation 導覽(一)未發布
- Day 44專案 9 Navigation 導覽(二)未發布
- Day 45專案 9 Navigation 導覽(三)未發布
- Day 46專案 9 Navigation 導覽(四)未發布
複習 IVDay 47–48
獨立挑戰 + 幾個觀念的深入補充。
- Day 47里程碑:專案 7–9 總複習與挑戰未發布
- Day 48拓展視野:進階閱讀與觀念補充未發布
專注資料Day 49–59
真正開始跟伺服器與資料庫打交道:網路請求、表單驗證、SwiftData。
- Day 49專案 10 Cupcake Corner 線上訂購(一)未發布
- Day 50專案 10 Cupcake Corner 線上訂購(二)未發布
- Day 51專案 10 Cupcake Corner 線上訂購(三)未發布
- Day 52專案 10 Cupcake Corner 線上訂購(四)未發布
- Day 53專案 11 Bookworm 書評(一)未發布
- Day 54專案 11 Bookworm 書評(二)未發布
- Day 55專案 11 Bookworm 書評(三)未發布
- Day 56專案 11 Bookworm 書評(四)未發布
- Day 57專案 12 SwiftData 資料儲存(一)未發布
- Day 58專案 12 SwiftData 資料儲存(二)未發布
- Day 59專案 12 SwiftData 資料儲存(三)未發布
複習 VDay 60–61
獨立挑戰 + SwiftData 專章。
- Day 60里程碑:專案 10–12 總複習與挑戰未發布
- Day 61SwiftData 專章補強未發布
濾鏡、地圖與更多Day 62–76
整合 SwiftUI 以外的框架:Core Image、MapKit、生物辨識,以及無障礙設計。
- Day 62專案 13 Instafilter 濾鏡(一)未發布
- Day 63專案 13 Instafilter 濾鏡(二)未發布
- Day 64專案 13 Instafilter 濾鏡(三)未發布
- Day 65專案 13 Instafilter 濾鏡(四)未發布
- Day 66專案 13 Instafilter 濾鏡(五)未發布
- Day 67專案 13 Instafilter 濾鏡(六)未發布
- Day 68專案 14 BucketList 願望清單(一)未發布
- Day 69專案 14 BucketList 願望清單(二)未發布
- Day 70專案 14 BucketList 願望清單(三)未發布
- Day 71專案 14 BucketList 願望清單(四)未發布
- Day 72專案 14 BucketList 願望清單(五)未發布
- Day 73專案 14 BucketList 願望清單(六)未發布
- Day 74專案 15 Accessibility 無障礙設計(一)未發布
- Day 75專案 15 Accessibility 無障礙設計(二)未發布
- Day 76專案 15 Accessibility 無障礙設計(三)未發布
複習 VIDay 77–78
獨立挑戰 + MapKit 專章。
- Day 77里程碑:專案 13–15 總複習與挑戰未發布
- Day 78MapKit 專章補強未發布
控制 UI 流程Day 79–94
最大的幾個 App:分頁、手勢、觸覺回饋、計時器、自訂版面。
- Day 79專案 16 Hot Prospects 名單管理(一)未發布
- Day 80專案 16 Hot Prospects 名單管理(二)未發布
- Day 81專案 16 Hot Prospects 名單管理(三)未發布
- Day 82專案 16 Hot Prospects 名單管理(四)未發布
- Day 83專案 16 Hot Prospects 名單管理(五)未發布
- Day 84專案 16 Hot Prospects 名單管理(六)未發布
- Day 85專案 16 Hot Prospects 名單管理(七)未發布
- Day 86專案 17 Flashzilla 手勢與觸覺(一)未發布
- Day 87專案 17 Flashzilla 手勢與觸覺(二)未發布
- Day 88專案 17 Flashzilla 手勢與觸覺(三)未發布
- Day 89專案 17 Flashzilla 手勢與觸覺(四)未發布
- Day 90專案 17 Flashzilla 手勢與觸覺(五)未發布
- Day 91專案 17 Flashzilla 手勢與觸覺(六)未發布
- Day 92專案 18 Layout and Geometry 版面與幾何(一)未發布
- Day 93專案 18 Layout and Geometry 版面與幾何(二)未發布
- Day 94專案 18 Layout and Geometry 版面與幾何(三)未發布
複習 VIIDay 95
最後一次獨立挑戰。
- Day 95里程碑:專案 16–18 總複習與挑戰未發布
最後一個專案Day 96–99
SnowSeeker:把 App 針對 iPad 做最佳化。
- Day 96專案 19 SnowSeeker iPad 最佳化(一)未發布
- Day 97專案 19 SnowSeeker iPad 最佳化(二)未發布
- Day 98專案 19 SnowSeeker iPad 最佳化(三)未發布
- Day 99專案 19 SnowSeeker iPad 最佳化(四)未發布
收尾Day 100–101
期末考,以及「然後呢」。
- Day 100期末考:檢驗 100 天的成果未發布
- Day 101結語:接下來要做什麼?未發布
找不到符合的天數,換個關鍵字看看。
怎麼跟著學(原課程的兩條規則)
- 每天花一小時讀教材、看影片或寫程式碼。
- 每天公開分享進度,用
#100DaysOfSwiftUI標籤,讓別人找得到你。
我自己加的三條
- 不要想背下來。忘記是學習的一部分,知道去哪裡查比背語法重要。
- 不要同時跟兩套課程。作者說他看過無數人這樣做,每一次都失敗。
- 用正式版 Xcode,不要用 beta。教材沒更新、API 會變、bug 一堆。
一起發布,一起完成
原課程的第二條規則就是「每天公開分享進度」。這不是形式——作者說過,獨狼式學習是最容易失敗的方式之一,而看到別人也在第 37 天卡住,是最有效的續命方式。
我的中文筆記會發在 Threads
每天一則,跟這裡的長筆記同步。追蹤 @knitting.hiyori 就能看到當天的進度、卡關與解法。
也把你的筆記發出來
不用寫得漂亮,三行就夠。用下面的格式,標上 #100DaysOfSwiftUI 和 #中文SwiftUI筆記,我們就找得到彼此:
標我一下,我會去看。發現寫得好的筆記,我會在自己的貼文裡轉出去——中文的 SwiftUI 資源太少了,多一份是一份。
常見問題
100 Days of SwiftUI 是什麼?需要付費嗎?
100 Days of SwiftUI 是英國開發者 Paul Hudson(Hacking with Swift)製作的免費 SwiftUI 課程,共 102 篇每日教材(Day 0 到 Day 100,加上一篇結語),包含文章、影片與互動測驗。課程本身完全免費,不需要註冊付費方案。
完全沒有程式基礎可以學嗎?
可以。Day 1 到 Day 14 從變數與常數開始教 Swift 語言本身,不預設任何程式背景。作者自己的估計是:零基礎、沒有資訊相關學位也沒上過 bootcamp 的人,大約需要 9 到 12 個月才能達到可以應徵入門 iOS 職缺的程度。
一定要有 Mac 嗎?用 Windows 或 iPad 可以嗎?
開發 iOS App 需要 Xcode,而 Xcode 只能在 macOS 上執行,所以需要一台 Mac。iPad 上的 Swift Playgrounds 可以用來練習 Swift 語法與做小型 App,但無法完整跟完這門課程。Windows 沒有官方支援的替代方案。
每天真的要一小時嗎?中斷了怎麼辦?
課程的兩條規則是「每天花一小時學習或寫程式」與「每天公開分享進度」。但作者明確說過不要趕進度:同時上兩三套課程、每天硬塞四五小時的做法他看過很多次,「每一次都失敗」。中斷幾天甚至幾週都沒關係,回來繼續就好。
應該先學 SwiftUI 還是 UIKit?
課程作者建議先學 SwiftUI。理由是同樣功能約只需 UIKit 四分之一的程式碼、為 Swift 語言設計、一套寫法可跨 iOS 與 macOS 等平台,而且是 Apple 的發展方向。UIKit 被列為「延伸技能」,等 SwiftUI 熟了再補。
我已經有一點程式基礎,該從第幾天開始?
完全沒有程式經驗就從 Day 0 開始。有其他語言基礎但沒寫過 Swift,建議 Day 1 到 Day 8 快速掃過,從 Day 9 的閉包開始認真讀,因為閉包、協定與可選值是 Swift 特有且之後每天都會用到的觀念。若 Swift 語法已經熟練,可以從 Day 15 的總複習確認沒有缺口,再進 Day 16 開始做 SwiftUI 專案。無論從第幾天開始,都不建議跳過里程碑日的獨立實作。
這個系列跟原課程是什麼關係?
這裡是我一邊跟課一邊寫的繁體中文筆記與心得,重點在整理觀念、記錄卡關的地方,不是原課程的逐字翻譯。建議搭配原文教材一起看:原課程有互動測驗與完整程式碼,是這份筆記無法取代的。
關於這個系列
我是 Zoe,平常在 knittinghiyori.com 寫旅行與生活。2026 年 8 月開始跟 100 Days of SwiftUI,目標是做出自己真的會用的 App。這裡的筆記是寫給「幾個月後忘記的自己」看的,如果剛好也幫到你,那更好。
我相信實作是學會最好的方法。所以這 100 天不只是讀完寫筆記——每學到一段能用的東西,就做成真的跑得起來的成品。做出來的東西都會放在這兩個地方,跟著這 100 天一起長:
如果內容有錯或有更好的寫法,歡迎直接留言告訴我,我會更正並註明。
最後更新:2026-08-12 · 已發布 1 / 102 篇
原課程:100 Days of SwiftUI(Paul Hudson,Hacking with Swift)。本頁為獨立撰寫的中文學習筆記,與 Hacking with Swift 無隸屬關係。Swift、SwiftUI、Xcode 為 Apple Inc. 之商標。