Skip to content

simonwell-swiftui/SwiftUIBeginnerCourse

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SwiftUI 入門課程

放置 SwiftUI 入門課程 的相關檔案,以及每一章節的相關連結、延伸閱讀。

Chapter 1:基本介紹

介紹 Xcode 介面和 SwiftUI 的基本架構。

相關連結

Chapter 2:排版

練習排版和基本的重構程式碼。

相關連結

Chapter 3:屬性包裝

介紹 SwiftUI 中常用的屬性包裝:State、Binding 和 Environment;練習建立清單、表單,並使用 enum 整理程式碼。

相關連結
  • EnvironmentValues 環境變數
  • 影片中提到的「在 result builder 中,local 變數會被當作建造的 block」,詳細的資訊可以在這個 evolution 記錄中了解,在 The result builder transform 的分類下可以認識 result builder 對不同語句的判斷。

Chapter 4:資料持久化

介紹 iOS 環境原生的資料持久化方式以及編碼的概念介紹,並實作一個設定畫面,使用 AppStorage 儲存布林、enum 和 Array 的資料。

相關連結

Chapter 5:測試

介紹測試的基本概念、Xcode 的測試介面並實作一個測試,以及使用 Measurement 進行單位轉換並且根據使用者 Locale 顯示在地化的單位字串。

相關連結
  • WWDC20: 在地化的格式化工具,影片中介紹了能把日期、單位、數字和文字等等資料,根據使用者 Locale 進行格式化的工具。

  • WWDC19: 測試、Test Plan、CICD 介紹

  • 了解 Locale,Locale 並不單指語言,而是結合語言加上地區,提供更精確的慣用法。例如同樣是英文,在不同國家寫日期的順序依然會有所不同。

    • 在你的 app 沒有做其他語言之前,Locale 會被設定成你的專案的 base language,詳細的介紹可以看這篇文章,裡面也提供了取得使用者偏好 / 正在使用的語言的方法,在你還沒做多語言之前,你可以嘗試取得這些值來強制修改 Locale。
  • 在 iOS16 加上工具列的背景色:文章是針對 TabBar 介紹,不過這個調整器 toolbarBackground 也能用來修改 Navigation Bar。

  • 你可能會發現 TabBar 在 iOS14 以前長得不一樣 🥲,如果你想要全部統一的話可以參考這篇文章中的程式碼做修改。


Chapter 6:網路呼叫

介紹基本的網路概念和 Codable 的進一步應用,並且建立一個串接 The Cat API 的新專案。 新專案的實作內容包含:

  • 建立一個專門處理網路的 Manager。
  • 處理錯誤和顯示 alert。
  • 觀察 reference typeObservableObject
  • 自動載入更多內容的 Infinite Scroll。
  • 認識.task 調整器和建立一個新的Task的差別。
相關連結
  • 6-2 常見 HTTP 狀態碼
  • 6-2 MIME 類型名稱對照
  • 6-2 判斷是否使用 Cache 資料的流程圖
  • 6-3 影片中提到的將回傳加入 cache 的條件
  • 6-5 影片中使用的快速產生 JSON 解析程式碼的網站。要記得用自動產生的程式碼的時候,不管多簡單的資料都要自己再檢查一遍哦
  • 6-8 StateObject 的文件:這個文件簡單介紹了搭配 ObservableObject 的三個屬性包裝器,以及它們的更新時機。建議大概閱讀啟動和更新的部分,當未來遇到 StateObject 重複被啟動或是沒有如預期的更新的時候再次回來閱讀。
  • 6-8 如果對 StateObject 和 ObservedObject 的差別有疑惑,可以參考 onevcat 的這篇文章
  • 6-11 onAppear 和 task 調整器的差別,這篇文章提到的差別我覺得都蠻重要的,除了影片中提過的,還有額外講到 task 搭配 id 的用法。
  • 6-11 如果對於使用TaskTask.detached的時機不太確定,可以參考這篇文章裡面的 When to use unstructured tasksWhen to use detached tasks
    另外,目前主流的做法是避免使用 detached,這並不是因為它不好,而是沒有什麼非得要用的原因(i.e. 沒必要讓自己的程式碼變複雜)。不過,我個人覺得 detached 的 explicit 對於初期掌握自己的程式碼在做什麼很有幫助,還有因為它沒有繼承而產生的一些報錯和警告也對初期學習很有幫助。
  • 6-11 如果想瞭解更多關於onAppear出現的時機,可以看這篇關於 View 的生命週期 的文章。
  • 6-11 影片中提到的,ObservableObject 會讓整個 View 進到 MainActor,這篇文章詳細講了關於 View struct 神秘的 @MainActor 情況。再一次強調,我覺得不用太在意這個,遇到這個錯誤就直接改進 MainActor 中就好。

About

適合新手的 SwiftUI 入門課程,照影片章節分類的程式碼,以及相關學習資源。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Swift 100.0%