[Video Summary] Swift Mid Term Solution - Olympics Playground & App
Mô tả nhanh
Video này trình bày lời giải cho hai trong ba bài tập giữa kỳ môn lập trình iOS/macOS với Swift và SwiftUI. Bài tập bao gồm một playground để thực hành các khái niệm Swift cơ bản và một ứng dụng hiển thị logo Olympic, sử dụng các hàm đã xây dựng trong playground.
Video
Mô tả chi tiết
Video này trình bày lời giải cho hai trong ba bài tập giữa kỳ môn lập trình iOS/macOS với Swift và SwiftUI. Các bài tập bao gồm một playground (sân chơi) để thực hành các khái niệm Swift cơ bản và một ứng dụng hiển thị logo Olympic, sử dụng các hàm đã xây dựng trong playground.
Phần 1: Playground
- Tạo Playground và Mảng Logos:
- Tạo một playground mới tên "Olympics".
- Thêm comment tên của bạn vào đầu file.
- Xóa hết code, chỉ giữ lại comment và
import
. - Thêm comment "q1 logos array".
- Tạo mảng
logos
chứa các chuỗi URL từ trình duyệt.
- In Mảng Logos:
- Thêm comment "Q2 D print logos array".
- Sử dụng
forEach
để in từng phần tử của mảnglogos
trên một dòng.
- Hàm
getImageName
:- Thêm comment "Q3 get image name".
- Tạo hàm
getImageName
nhận một tham sốlogoName
(string) và trả về một string sau khi loại bỏ đuôi mở rộng (extension).png
,.jpg
,.jpeg
(nếu có). - Sử dụng phương thức
replacingOccurrences(of:with:)
để loại bỏ đuôi mở rộng. - Gọi hàm
getImageName
cho từng phần tử trong mảnglogos
và in kết quả.
- Hàm
getYear
:- Thêm comment "Q4 get year".
- Tạo hàm
getYear
nhận tham sốlogoName
(string) và trả về string chứa năm (ví dụ: 2024). - Sử dụng phương thức
components(separatedBy:)
để tách chuỗi theo dấu '-' và lấy phần tử đầu tiên (năm). - Gọi hàm
getYear
cho từng phần tử trong mảnglogos
và in kết quả.
- Hàm
getCountry
:- Thêm comment "Q5 get country".
- Tạo hàm
getCountry
nhận tham sốlogoName
(string) và trả về string chứa tên quốc gia, viết hoa chữ cái đầu (ngoại trừ "USA" viết hoa toàn bộ). - Sử dụng
components(separatedBy:)
để lấy phần tử cuối cùng (quốc gia). - Gọi hàm
getImageName
để loại bỏ đuôi mở rộng trong tên nước trước khi thực hiện viết hoa. - Nếu là USA sẽ viết hoa toàn bộ, các nước khác viết hoa chữ cái đầu.
- Gọi hàm
getCountry
cho từng phần tử trong mảnglogos
và in kết quả.
- Hàm
getCity
:- Thêm comment "Q6 get city".
- Tạo hàm
getCity
nhận tham sốlogoName
(string) và trả về string chứa tên thành phố, viết hoa chữ cái đầu của mỗi từ. - Sử dụng
components(separatedBy:)
để tách chuỗi, loại bỏ phần tử đầu và cuối, sau đó lấy các phần còn lại và viết hoa chữ cái đầu. - Gọi hàm
getCity
cho từng phần tử trong mảnglogos
và in kết quả.
Phần 2: Ứng dụng iOS
- Tạo Dự Án Xcode:
- Tạo dự án Xcode mới tên "Summer Olympics".
- Copy mảng
logos
từ playground vàoContentView
. - Tạo biến
logoNumber
kiểuState
và khởi tạo là 22 (vị trí của Paris 2024 trong mảnglogos
).
- Thêm Ảnh vào Assets:
- Tải các ảnh từ đường link trong video vào thư mục Files.
- Kéo tất cả các ảnh vào
Assets.xcassets
trong Xcode (cả launch screen và icon). - Thiết lập launch screen trong phần "Info".
- Thêm Các Hàm từ Playground
- Copy các hàm
getImageName
,getYear
,getCountry
,getCity
từ playground vào trong structContentView
.
- Copy các hàm
- Xây dựng giao diện:
- Xóa các view mặc định trong
VStack
. - Thêm
Text
hiển thị tiêu đề "Olympic logos" với font lớn và chữ đậm. - Thêm một
Spacer
để đẩy tiêu đề lên trên đầu. - Thêm
Image
hiển thị logo Olympic, sử dụnggetImageName
để lấy tên ảnh tương ứng. - Thêm một
Spacer
để đẩy image vào giữa. - Thêm
Text
hiển thị thành phố và quốc gia, sử dụng kết hợp các hàmgetCity
vàgetCountry.
- Thêm
Text
hiển thị năm , sử dụng hàmgetYear
. - Đặt hai
Text
vừa tạo trong mộtVStack
, style cho cảVStack
để không lặp lại code style của từngText
. - Thêm 2 button (trái/phải) để chuyển logo, sử dụng các icon hệ thống.
- Bố trí hai button cạnh nhau trong
HStack
.
- Xóa các view mặc định trong
- Xử lý sự kiện:
- Button trái: Giảm
logoNumber
đi 1. - Button phải: Tăng
logoNumber
lên 1. - Disable button trái khi
logoNumber
là 0 (đầu mảng). - Disable button phải khi
logoNumber
làlogos.count - 1
(cuối mảng). - Sửa lỗi hiển thị nước, sửa lại
getCity
thànhgetCountry
.
- Button trái: Giảm
Chúc các bạn thành công!