[Video Summary] CatBreeds App - a Prof. G. SwiftUI Exam Challenge & Solution
Mô tả nhanh
Video này trình bày lời giải cho bài kiểm tra cuối kỳ môn SwiftUI của Prof. G, tập trung vào việc xây dựng ứng dụng CatBreeds. Ứng dụng này sử dụng URLSession để gọi API, phân tích JSON, hiển thị danh sách các giống mèo, hình ảnh và thông tin chi tiết của chúng, cũng như cung cấp một số thông tin thú vị ngẫu nhiên về mèo.
Video
Mô tả chi tiết
Video này trình bày lời giải cho bài kiểm tra cuối kỳ môn SwiftUI của Prof. G, tập trung vào việc xây dựng ứng dụng CatBreeds. Ứng dụng này sử dụng URLSession để gọi API, phân tích JSON, hiển thị danh sách các giống mèo, hình ảnh và thông tin chi tiết của chúng, cũng như cung cấp một số thông tin thú vị ngẫu nhiên về mèo.
Dưới đây là các bước chính trong quá trình xây dựng ứng dụng:
- Thiết lập dự án và tài nguyên:
- Tạo một ứng dụng SwiftUI mới có tên Catfax.
- Tải xuống và thêm các tệp icon và logo vào project.
- Tạo một struct
CatBreed
để lưu trữ thông tin về các giống mèo, bao gồm các thuộc tính nhưbreed
,country
,origin
,coat
,pattern
, đảm bảo struct này tuân thủ giao thứcIdentifiable
vàCodable
. - Cấu trúc
CatBreed
chứa mộtid
được tạo tự động bằngUUID()
, và sử dụngCodingKeys
để bỏ qua việc tảiid
từ JSON.
- Xây dựng View Model:
- Tạo một class
CatViewModel
tuân thủObservableObject
để quản lý dữ liệu và logic. - Class này có các thuộc tính:
breeds
: một mảng các structCatBreed
lưu trữ dữ liệu tải về.total
: số lượng giống mèo có sẵnurlstring
: địa chỉ API để tải dữ liệu.
- Hàm
getData()
để lấy dữ liệu JSON từ API và gán vào thuộc tínhbreeds
vàtotal
. Sử dụngURLSession
vàJSONDecoder
để xử lý dữ liệu. - Hàm
loadNextIfNeeded(_ catBreed: CatBreed)
để tải thêm dữ liệu khi người dùng cuộn đến cuối danh sách. - Hàm
loadAll
: Tải toàn bộ dữ liệu mèo từ tất cả các trang bằng cách gọi đệ quy hàmgetData
.
- Tạo một class
- Xây dựng List View:
- Tạo một
ListView
để hiển thị danh sách các giống mèo. - Sử dụng
NavigationStack
để hiển thị danh sách và cho phép điều hướng đến các view chi tiết. - Tạo một
stateObject
catVM để sử dụngcatViewModel
. - Sử dụng
List
vàNavigationLink
để hiển thị danh sách các giống mèo và điều hướng đếnDetailView
khi một dòng được chọn. - Hiển thị tên giống mèo trong mỗi hàng của danh sách, có tiêu đề
Cat Breeds
cho view này. - Thêm một
toolbar
ở dưới cùng để hiển thị số lượng mèo đã tải về và tổng số mèo. - Thêm nút "Load All" để tải tất cả các giống mèo có sẵn từ API.
- Thêm progress view để hiển thị tiến trình tải dữ liệu.
- Sử dụng
LazyVStack
để tải dữ liệu khi người dùng cuộn đến cuối danh sách.
- Tạo một
- Xây dựng Detail View:
- Tạo một
DetailView
để hiển thị thông tin chi tiết của mỗi giống mèo. - Nhận một
catBreed
object từListView
. - Hiển thị các thông tin như tên, quốc gia, nguồn gốc, lông và hoa văn của giống mèo.
- Sử dụng
navigationTitle
để hiển thị tên giống mèo ở đầu view - Hiển thị dữ liệu sử dụng
HStack
với text label (bên trái) và text giá trị (bên phải). - Sử dụng một
AsyncImage
để hiển thị ảnh. - Thêm một placeholder khi ảnh chưa tải.
- Sử dụng một dictionary để ánh xạ tên giống mèo với URL ảnh tương ứng.
- Tạo một
- Thêm chức năng Cat Fact:
- Tạo
FactViewModel
để tải dữ liệu về các câu nói ngẫu nhiên về mèo. - Thêm một nút trên
ListView
để hiển thị mộtsheet
với nội dung fact. - Sử dụng
presentationDetents
để điều chỉnh kích thướcsheet
.
- Tạo
Lời giải này cho thấy cách xây dựng ứng dụng SwiftUI hoàn chỉnh, bao gồm tải dữ liệu từ API, phân tích JSON, hiển thị danh sách, điều hướng, tải thêm dữ liệu khi cuộn và hiển thị hình ảnh.
Chúc bạn có một trải nghiệm học tập và lập trình thú vị!