100 Days of SwiftUI 中文學習筆記

100 Days of SwiftUI 中文學習筆記|完整目錄與程度測驗 – 預覽

本機預覽檔,互動功能都能實際操作。上線時請把對應的 block.html 貼進 WordPress 自訂 HTML 區塊,並安裝 100days-snippet.php(樣式與互動都在裡面)。

100 Days of SwiftUI 中文學習筆記

從 Day 0 到 Day 100,一天一篇繁體中文筆記與心得,共 102 篇。零基礎開始,用 Swift 與 SwiftUI 做出真正能上架的 iOS App。

繁體中文 共 102 篇 每日更新 課程免費
系列進度1 / 102 篇(1.0%)

這個系列是什麼

這是我跟著 100 Days of SwiftUI 學習 iOS 開發的繁體中文筆記,101 天課程加 1 篇結語,共 102 篇。原課程由 Paul Hudson 製作、完全免費;這裡放的是我整理過的重點摘要、程式碼範例,以及每天實際卡關的地方。

你會在這裡看到什麼

  • 重點摘要:每天的核心觀念用中文重寫,不逐字翻譯。
  • 程式碼範例:可以直接貼進 Xcode 跑的 Swift 片段。
  • 踩雷紀錄:報錯訊息、卡了多久、最後怎麼解掉。
  • 我的心得:哪裡有感、哪裡覺得作者講得不夠清楚。

這裡不會有什麼

  • 原課程的完整教材內容與互動測驗(請直接到 Hacking with Swift 做,免費)。
  • 付費課程推銷。這 100 天需要的所有資源都是免費的。

我該從第幾天開始?

完全沒寫過程式的人請直接從 Day 0 開始,不用測。如果你有一點基礎,回答下面四題,會得到一個建議的起點與該注意的地方。

1你寫過程式嗎?
2對 Swift 語法的熟悉度?
3做過 iOS App 嗎?
4@State、@Binding、NavigationStack、URLSession、SwiftData,你會幾個?
已回答 0 / 4

建議起點

Day 0

    不管從第幾天開始,這兩件事都一樣:不要同時跟兩套課程,也不要跳過里程碑日的獨立實作——那是唯一能檢驗自己真的會了的地方。

    看那一天的內容

    測驗結果只存在你的瀏覽器,不會上傳。這是我依照課程結構整理的建議,不是官方分級。

    課程地圖:這 101 天在學什麼

    整個課程分成三大塊:前 14 天學 Swift 語言,之後用 19 個實作專案學 SwiftUI,中間穿插 7 次複習與獨立挑戰。

    100 Days of SwiftUI 課程階段總覽
    天數階段主要內容完成後你會
    Day 0準備學習心態、五個核心技能、七個常見錯誤裝好 Xcode,知道該怎麼學
    Day 1–14Swift 語言基礎變數、集合、流程控制、函式、閉包、結構、類別、協定、可選值看得懂、寫得出 Swift 程式碼
    Day 15複習 ISwift 總複習補掉前 14 天的漏洞
    Day 16–24SwiftUI 起步專案 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–94UI 流程控制專案 16–18:Hot Prospects、Flashzilla、Layout and Geometry手勢、觸覺、分頁、自訂版面
    Day 95複習 VII里程碑:專案 16–18獨立完成大型 App
    Day 96–99最後一個專案專案 19:SnowSeekeriPad 最佳化
    Day 100–101收尾期末考、結語完成 100 天

    完整目錄

    點開任一階段展開該階段的每一天。已發布的天數可以直接點進去看筆記。

    我的進度 0 / 102
    準備Day 0

    不寫程式碼的一天:把學習心態、要學什麼、不該做什麼先搞清楚。

    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結語:接下來要做什麼?未發布

    找不到符合的天數,換個關鍵字看看。

    怎麼跟著學(原課程的兩條規則)

    1. 每天花一小時讀教材、看影片或寫程式碼。
    2. 每天公開分享進度,用 #100DaysOfSwiftUI 標籤,讓別人找得到你。

    我自己加的三條

    • 不要想背下來。忘記是學習的一部分,知道去哪裡查比背語法重要。
    • 不要同時跟兩套課程。作者說他看過無數人這樣做,每一次都失敗。
    • 用正式版 Xcode,不要用 beta。教材沒更新、API 會變、bug 一堆。

    一起發布,一起完成

    原課程的第二條規則就是「每天公開分享進度」。這不是形式——作者說過,獨狼式學習是最容易失敗的方式之一,而看到別人也在第 37 天卡住,是最有效的續命方式。

    我的中文筆記會發在 Threads

    每天一則,跟這裡的長筆記同步。追蹤 @knitting.hiyori 就能看到當天的進度、卡關與解法。

    在 Threads 追蹤我

    也把你的筆記發出來

    不用寫得漂亮,三行就夠。用下面的格式,標上 #100DaysOfSwiftUI 和 #中文SwiftUI筆記,我們就找得到彼此:

    Day __ of #100DaysOfSwiftUI ✅ 今天學了: 卡住的地方: 明天要做: #中文SwiftUI筆記 @knitting.hiyori

    標我一下,我會去看。發現寫得好的筆記,我會在自己的貼文裡轉出去——中文的 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 天一起長:

    我做出來的東西

    App —— 這 100 天累積出來的 iOS App,從最小可用的版本開始,做完就放上去。

    小工具 —— 網頁版的計算機、換算器、小工具,不用下載直接用。

    如果內容有錯或有更好的寫法,歡迎直接留言告訴我,我會更正並註明。

    最後更新:2026-08-12 · 已發布 1 / 102 篇

    原課程:100 Days of SwiftUI(Paul Hudson,Hacking with Swift)。本頁為獨立撰寫的中文學習筆記,與 Hacking with Swift 無隸屬關係。Swift、SwiftUI、Xcode 為 Apple Inc. 之商標。