[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ứcIdentifiablevàCodable. - Cấu trúc
CatBreedchứa mộtidđược tạo tự động bằngUUID(), và sử dụngCodingKeysđể bỏ qua việc tảiidtừ JSON.
- Xây dựng View Model:
- Tạo một class
CatViewModeltuâ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 structCatBreedlư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ínhbreedsvàtotal. Sử dụngURLSessionvà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
stateObjectcatVM để sử dụngcatViewModel. - Sử dụng
ListvàNavigationLinkđể hiển thị danh sách các giống mèo và điều hướng đếnDetailViewkhi 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 Breedscho 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
catBreedobject 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
HStackvớ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ộtsheetvớ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ị!