Skip to content

Commit af97d73

Browse files
authored
Merge pull request #1 from neotruong/swift-guide
Add Swift guide content (MERGED)
2 parents 8cf3721 + 4a4af65 commit af97d73

File tree

8 files changed

+388
-1
lines changed

8 files changed

+388
-1
lines changed

docs/dinh-huong/swift/index.md

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
2+
# 🚀 Lộ Trình Học iOS từ con số 0
3+
4+
Chào mừng bạn đến với **lộ trình học lập trình iOS từ con số 0**! Đây là hành trình giúp bạn xây dựng nền tảng vững chắc và phát triển ứng dụng iOS chuyên nghiệp. 🌟
5+
6+
## 💡 Lời khuyên: Nên bắt đầu với SwiftUI
7+
8+
🔑 **Lưu ý**: Hãy nắm chắc kiến thức nền tảng về Swift trước khi đi sâu vào các framework như SwiftUI hoặc UIKit.
9+
10+
Mặc dù `UIKit` là một framework mạnh mẽ và vẫn được sử dụng rộng rãi, nếu bạn là người mới bắt đầu, mình khuyên bạn nên **bắt đầu với SwiftUI trước**.
11+
12+
### 🚀 SwiftUI là tương lai của iOS Development
13+
14+
Apple đang đầu tư mạnh vào SwiftUI và trong tương lai gần, đây sẽ là **framework chính** mà Apple ưu tiên.
15+
16+
Việc nắm vững `SwiftUI` ngay từ đầu sẽ giúp bạn có:
17+
18+
- Một nền tảng vững chắc
19+
- Dễ dàng chuyển sang học `UIKit` nếu cần
20+
- Chuẩn bị tốt cho các dự án hiện đại và đa nền tảng
21+
22+
---
23+
24+
## 📍 Các Giai Đoạn Chính
25+
26+
1. **[Nền tảng Swift](./swift-foundation.md)**
27+
Làm quen với Swift và các khái niệm lập trình cơ bản.
28+
29+
2. **[UIKit](./swift-uikit.md)**
30+
Xây dựng giao diện người dùng truyền thống với UIKit.
31+
32+
3. **[SwiftUI](./swift-swiftui.md)**
33+
Tạo giao diện hiện đại, đa nền tảng với SwiftUI.
34+
35+
4. **Swift Advance** 🚧 *Coming soon...*
36+
Các chủ đề nâng cao như concurrency, networking, pattern, v.v.
37+
38+
5. **Portfolio Project** 🚧 *Coming soon...*
39+
Phát triển ứng dụng thực tế để tạo portfolio ấn tượng.
40+
41+
---
42+
43+
## 📚 Các nguồn tham khảo uy tín
44+
45+
- **[Hacking with Swift](https://www.hackingwithswift.com/)**
46+
Trang học Swift của Paul Hudson – quá nổi tiếng trong giới iOS. Với series "100 Days of Swift" cực kỳ bài bản và miễn phí
47+
48+
- **[FX Studio](https://fxstudio.dev/)**
49+
Blog tiếng Việt cho anh em iOS dev. Bạn sẽ tìm thấy từ kiến thức Swift cơ bản đến các chủ đề nâng cao như SwiftUI, Combine, Clean Architecture.
50+
51+
- **[Essential Developer](https://www.youtube.com/@EssentialDeveloper)**
52+
Kênh YouTube dành cho ai muốn code iOS một cách chuyên nghiệp, chuẩn clean code, test-driven và hiểu sâu về kiến trúc phần mềm.
53+
54+
- **[Swiftful Thinking](https://www.youtube.com/@SwiftfulThinking)**
55+
Một kênh YouTube thân thiện, trình bày rõ ràng, chuyên SwiftUI.
56+
57+
- **[Awesome iOS](https://github.com/vsouza/awesome-ios)**
58+
Tổng hợp đủ thứ từ thư viện, tài liệu, tools cho đến bài viết chất lượng.
59+
60+
- **[iOS Performance Optimization](https://github.com/hoangatuan/iOS-Performance-Optimization)**
61+
Repo của anh Hoàng Tú An – chia sẻ rất nhiều kiến thức tối ưu hiệu năng app iOS: từ CPU, memory, battery cho đến startup time

docs/dinh-huong/swift/swift-advance.md

Whitespace-only changes.
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# 🧱 Nền tảng Swift (0–1 tháng)
2+
3+
## 🎯 Mục tiêu:
4+
- Nắm chắc Swift cơ bản (cú pháp, vòng lặp, điều kiện, etc.)
5+
- Làm quen với tư duy lập trình
6+
- Biết sử dụng Xcode, Simulator, và Playground
7+
8+
---
9+
10+
## **Chuẩn bị môi trường code**
11+
12+
### 1. Cài đặt Xcode
13+
- Mở **App Store** trên máy Mac.
14+
- Tìm kiếm **“Xcode”**.
15+
- Nhấn nút **"Install"**.
16+
17+
### 2. Tạo tài khoản Apple Developer
18+
- Truy cập: [developer.apple.com](https://developer.apple.com/)
19+
- Đăng ký tài khoản miễn phí để sử dụng đầy đủ tính năng của **Xcode**.
20+
21+
---
22+
23+
## **Tại Sao Cần Học Nền Tảng Swift Trước Khi Học UI (UIKit & SwiftUI)**
24+
25+
Việc xây dựng một ngôi nhà vững chắc đòi hỏi một nền móng kiên cố. Tương tự, để trở thành một lập trình viên iOS giỏi, bạn cần nắm vững nền tảng về ngôn ngữ **Swift** trước khi đi sâu vào xây dựng giao diện người dùng (UI) bằng **UIKit** hoặc **SwiftUI**.
26+
27+
---
28+
29+
## 📅 **Tuần 1 & 2: Nền Tảng Swift**
30+
31+
### **Lịch học hàng ngày**
32+
33+
1. **Day 1:** [Variables, simple data types, and string interpolation](https://www.hackingwithswift.com/100/1)
34+
2. **Day 2:** [Arrays, dictionaries, sets, and enums](https://www.hackingwithswift.com/100/2)
35+
3. **Day 3:** [Operators and conditions](https://www.hackingwithswift.com/100/3)
36+
4. **Day 4:** [Loops, loops, and more loops](https://www.hackingwithswift.com/100/4)
37+
5. **Day 5:** [Functions, parameters, and errors](https://www.hackingwithswift.com/100/5)
38+
6. **Day 6:** [Closures part one](https://www.hackingwithswift.com/100/6)
39+
7. **Day 7:** [Closures part two](https://www.hackingwithswift.com/100/7)
40+
8. **Day 8:** [Structs, properties, and methods](https://www.hackingwithswift.com/100/8)
41+
9. **Day 9:** [Access control, static properties, and laziness](https://www.hackingwithswift.com/100/9)
42+
10. **Day 10:** [Classes and inheritance](https://www.hackingwithswift.com/100/10)
43+
11. **Day 11:** [Protocols, extensions, and protocol extensions](https://www.hackingwithswift.com/100/11)
44+
12. **Day 12:** [Optionals, unwrapping, and typecasting](https://www.hackingwithswift.com/100/12)
45+
13. **Day 13:** [Swift review, day one](https://www.hackingwithswift.com/100/13)
46+
14. **Day 14:** [Swift review, day two](https://www.hackingwithswift.com/100/14)
47+
15. **Day 15:** [Swift review, day three](https://www.hackingwithswift.com/100/14)
48+
49+
Sau khi nắm vững kiến thức cơ bản về ngôn ngữ bạn có thể bắt đầu học về UI và thực hành các dự án cá nhân cơ bản
50+
51+
52+
---
53+

docs/dinh-huong/swift/swift-reference.md

Whitespace-only changes.
Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
# 🎨 SwiftUI + Combine
2+
3+
**SwiftUI** là framework hiện đại của Apple để xây dựng giao diện người dùng trên iOS, macOS, watchOS và tvOS. Với phong cách lập trình khai báo (declarative programming), SwiftUI giúp lập trình viên tạo giao diện nhanh chóng, trực quan và dễ bảo trì. Tính đến năm 2025, **SwiftUI đang dần trở thành tiêu chuẩn cho các ứng dụng iOS mới**, được Apple đẩy mạnh phát triển.
4+
5+
Dưới đây là lộ trình học SwiftUI dựa trên series **100 Days of SwiftUI** từ Hacking with Swift, tập trung vào thực hành qua các dự án thực tế.
6+
7+
Ngoài ra bạn có thể tham khảo các khóa học khác về SwiftUI mà mình thấy được cộng đồng đánh giá cao
8+
9+
- **[Swiftful Thinking](https://www.youtube.com/@SwiftfulThinking)**
10+
Kênh YouTube nổi tiếng với các video chất lượng về SwiftUI, Combine và các kiến thức nâng cao. Phù hợp với cả người mới bắt đầu và lập trình viên đã có kinh nghiệm.
11+
12+
- **[iOS Academy](https://www.youtube.com/@iOSAcademy)**
13+
Cung cấp các hướng dẫn rõ ràng và thực tế về cách xây dựng app iOS với SwiftUI và UIKit. Có rất nhiều series theo từng dự án thực tế.
14+
15+
- **[Stewart Lynch](https://www.youtube.com/@StewartLynch/videos)**
16+
Kênh cá nhân của Stewart Lynch với các bài học chi tiết và chuyên sâu, đặc biệt phù hợp với người học muốn hiểu sâu về cách viết mã "sạch" và dễ bảo trì.
17+
18+
- **[CS193P - Stanford University](https://cs193p.stanford.edu/2023)**
19+
Khóa học SwiftUI nổi tiếng từ Đại học Stanford, được cập nhật hàng năm. Cung cấp nền tảng kiến thức học thuật và các bài tập thực hành chuyên sâu.
20+
21+
---
22+
23+
## Days 16-24: Starting SwiftUI
24+
25+
- [Day 16 – Project 1, part one](https://www.hackingwithswift.com/100/swiftui/16)
26+
- [Day 17 – Project 1, part two](https://www.hackingwithswift.com/100/swiftui/17)
27+
- [Day 18 – Project 1, part three](https://www.hackingwithswift.com/100/swiftui/18)
28+
- [Day 19 – Challenge day](https://www.hackingwithswift.com/100/swiftui/19)
29+
- [Day 20 – Project 2, part one](https://www.hackingwithswift.com/100/swiftui/20)
30+
- [Day 21 – Project 2, part two](https://www.hackingwithswift.com/100/swiftui/21)
31+
- [Day 22 – Project 2, part three](https://www.hackingwithswift.com/100/swiftui/22)
32+
- [Day 23 – Project 3, part one](https://www.hackingwithswift.com/100/swiftui/23)
33+
- [Day 24 – Project 3, part two](https://www.hackingwithswift.com/100/swiftui/24)
34+
35+
## Day 25: Consolidation II
36+
37+
- [Day 25 – Milestone: Projects 1-3](https://www.hackingwithswift.com/100/swiftui/25)
38+
39+
## Days 26-34: Expanding your skills
40+
41+
- [Day 26 – Project 4, part one](https://www.hackingwithswift.com/100/swiftui/26)
42+
- [Day 27 – Project 4, part two](https://www.hackingwithswift.com/100/swiftui/27)
43+
- [Day 28 – Project 4, part three](https://www.hackingwithswift.com/100/swiftui/28)
44+
- [Day 29 – Project 5, part one](https://www.hackingwithswift.com/100/swiftui/29)
45+
- [Day 30 – Project 5, part two](https://www.hackingwithswift.com/100/swiftui/30)
46+
- [Day 31 – Project 5, part three](https://www.hackingwithswift.com/100/swiftui/31)
47+
- [Day 32 – Project 6, part one](https://www.hackingwithswift.com/100/swiftui/32)
48+
- [Day 33 – Project 6, part two](https://www.hackingwithswift.com/100/swiftui/33)
49+
- [Day 34 – Project 6, part three](https://www.hackingwithswift.com/100/swiftui/34)
50+
51+
## Day 35: Consolidation III
52+
53+
- [Day 35 – Milestone: Projects 4-6](https://www.hackingwithswift.com/100/swiftui/35)
54+
55+
## Days 36-46: Scaling up to bigger apps
56+
57+
- [Day 36 – Project 7, part one](https://www.hackingwithswift.com/100/swiftui/36)
58+
- [Day 37 – Project 7, part two](https://www.hackingwithswift.com/100/swiftui/37)
59+
- [Day 38 – Project 7, part three](https://www.hackingwithswift.com/100/swiftui/38)
60+
- [Day 39 – Project 8, part one](https://www.hackingwithswift.com/100/swiftui/39)
61+
- [Day 40 – Project 8, part two](https://www.hackingwithswift.com/100/swiftui/40)
62+
- [Day 41 – Project 8, part three](https://www.hackingwithswift.com/100/swiftui/41)
63+
- [Day 42 – Project 8, part four](https://www.hackingwithswift.com/100/swiftui/42)
64+
- [Day 43 – Project 9, part one](https://www.hackingwithswift.com/100/swiftui/43)
65+
- [Day 44 – Project 9, part two](https://www.hackingwithswift.com/100/swiftui/44)
66+
- [Day 45 – Project 9, part three](https://www.hackingwithswift.com/100/swiftui/45)
67+
- [Day 46 – Project 9, part four](https://www.hackingwithswift.com/100/swiftui/46)
68+
69+
## Days 47-48: Consolidation IV
70+
71+
- [Day 47 – Milestone: Projects 7-9](https://www.hackingwithswift.com/100/swiftui/47)
72+
- [Day 48 – Expanding your horizons](https://www.hackingwithswift.com/100/swiftui/48)
73+
74+
## Days 49-59: Focus on data
75+
76+
- [Day 49 – Project 10, part one](https://www.hackingwithswift.com/100/swiftui/49)
77+
- [Day 50 – Project 10, part two](https://www.hackingwithswift.com/100/swiftui/50)
78+
- [Day 51 – Project 10, part three](https://www.hackingwithswift.com/100/swiftui/51)
79+
- [Day 52 – Project 10, part four](https://www.hackingwithswift.com/100/swiftui/52)
80+
- [Day 53 – Project 11, part one](https://www.hackingwithswift.com/100/swiftui/53)
81+
- [Day 54 – Project 11, part two](https://www.hackingwithswift.com/100/swiftui/54)
82+
- [Day 55 – Project 11, part three](https://www.hackingwithswift.com/100/swiftui/55)
83+
- [Day 56 – Project 11, part four](https://www.hackingwithswift.com/100/swiftui/56)
84+
- [Day 57 – Project 12, part one](https://www.hackingwithswift.com/100/swiftui/57)
85+
- [Day 58 – Project 12, part two](https://www.hackingwithswift.com/100/swiftui/58)
86+
- [Day 59 – Project 12, part three](https://www.hackingwithswift.com/100/swiftui/59)
87+
88+
## Days 60-61: Consolidation V
89+
90+
- [Day 60 – Milestone: Projects 10-12](https://www.hackingwithswift.com/100/swiftui/60)
91+
- [Day 61 – Time for SwiftData](https://www.hackingwithswift.com/100/swiftui/61)
92+
93+
## Days 62-76: Filters, maps, and more
94+
95+
- [Day 62 – Project 13, part one](https://www.hackingwithswift.com/100/swiftui/62)
96+
- [Day 63 – Project 13, part two](https://www.hackingwithswift.com/100/swiftui/63)
97+
- [Day 64 – Project 13, part three](https://www.hackingwithswift.com/100/swiftui/64)
98+
- [Day 65 – Project 13, part four](https://www.hackingwithswift.com/100/swiftui/65)
99+
- [Day 66 – Project 13, part five](https://www.hackingwithswift.com/100/swiftui/66)
100+
- [Day 67 – Project 13, part six](https://www.hackingwithswift.com/100/swiftui/67)
101+
- [Day 68 – Project 14, part one](https://www.hackingwithswift.com/100/swiftui/68)
102+
- [Day 69 – Project 14, part two](https://www.hackingwithswift.com/100/swiftui/69)
103+
- [Day 70 – Project 14, part three](https://www.hackingwithswift.com/100/swiftui/70)
104+
- [Day 71 – Project 14, part four](https://www.hackingwithswift.com/100/swiftui/71)
105+
- [Day 72 – Project 14, part five](https://www.hackingwithswift.com/100/swiftui/72)
106+
- [Day 73 – Project 14, part six](https://www.hackingwithswift.com/100/swiftui/73)
107+
- [Day 74 – Project 15, part one](https://www.hackingwithswift.com/100/swiftui/74)
108+
- [Day 75 – Project 15, part two](https://www.hackingwithswift.com/100/swiftui/75)
109+
- [Day 76 – Project 15, part three](https://www.hackingwithswift.com/100/swiftui/76)
110+
111+
## Days 77-78: Consolidation VI
112+
113+
- [Day 77 – Milestone: Projects 13-15](https://www.hackingwithswift.com/100/swiftui/77)
114+
- [Day 78 – Time for MapKit](https://www.hackingwithswift.com/100/swiftui/78)
115+
116+
## Days 79-94: Controlling UI flow
117+
118+
- [Day 79 – Project 16, part one](https://www.hackingwithswift.com/100/swiftui/79)
119+
- [Day 80 – Project 16, part two](https://www.hackingwithswift.com/100/swiftui/80)
120+
- [Day 81 – Project 16, part three](https://www.hackingwithswift.com/100/swiftui/81)
121+
- [Day 82 – Project 16, part four](https://www.hackingwithswift.com/100/swiftui/82)
122+
- [Day 83 – Project 16, part five](https://www.hackingwithswift.com/100/swiftui/83)
123+
- [Day 84 – Project 16, part six](https://www.hackingwithswift.com/100/swiftui/84)
124+
- [Day 85 – Project 16, part seven](https://www.hackingwithswift.com/100/swiftui/85)
125+
- [Day 86 – Project 17, part one](https://www.hackingwithswift.com/100/swiftui/86)
126+
- [Day 87 – Project 17, part two](https://www.hackingwithswift.com/100/swiftui/87)
127+
- [Day 88 – Project 17, part three](https://www.hackingwithswift.com/100/swiftui/88)
128+
- [Day 89 – Project 17, part four](https://www.hackingwithswift.com/100/swiftui/89)
129+
- [Day 90 – Project 17, part five](https://www.hackingwithswift.com/100/swiftui/90)
130+
- [Day 91 – Project 17, part six](https://www.hackingwithswift.com/100/swiftui/91)
131+
- [Day 92 – Project 18, part one](https://www.hackingwithswift.com/100/swiftui/92)
132+
- [Day 93 – Project 18, part two](https://www.hackingwithswift.com/100/swiftui/93)
133+
- [Day 94 – Project 18, part three](https://www.hackingwithswift.com/100/swiftui/94)
134+
135+
## Day 95: Consolidation VII
136+
137+
- [Day 95 – Milestone: Projects 16-18](https://www.hackingwithswift.com/100/swiftui/95)
138+
139+
## Days 96-99: One last project
140+
141+
- [Day 96 – Project 19, part one](https://www.hackingwithswift.com/100/swiftui/96)
142+
- [Day 97 – Project 19, part two](https://www.hackingwithswift.com/100/swiftui/97)
143+
- [Day 98 – Project 19, part three](https://www.hackingwithswift.com/100/swiftui/98)
144+
- [Day 99 – Project 19, part four](https://www.hackingwithswift.com/100/swiftui/99)
145+
146+
## Wrap up
147+
148+
- [Day 100 – Final exam](https://www.hackingwithswift.com/100/swiftui/100)
149+
- [Epilogue – What now?](https://www.hackingwithswift.com/100/swiftui/100)

0 commit comments

Comments
 (0)