[Video Summary] Ch. 8.7 Deleting data with CloudFirestore and SwiftUI, Snacktacular App (2024)
Mô tả nhanh
Video này hướng dẫn cách xóa dữ liệu (delete documents) từ Cloud Firestore sử dụng Swift và SwiftUI trong ứng dụng Snacktacular. Nội dung bao gồm việc sử dụng swipe action để xóa một mục trong danh sách, và cách tạo một hàm static để delete.
Video
Mô tả chi tiết
Video này hướng dẫn cách xóa dữ liệu (delete documents) từ Cloud Firestore sử dụng Swift và SwiftUI trong ứng dụng Snacktacular.
Các bước thực hiện chính:
-
Thêm Swipe Action vào List View:
- Sử dụng
.swipeActions(edge: .trailing)
modifier sauNavigationLink
để thêm action delete khi vuốt sang trái. - Bên trong
swipeActions
, tạo mộtButton
với label "Delete", role là.destructive
để hiển thị màu đỏ cho button xóa. - Action của button sẽ gọi hàm delete.
- Sử dụng
-
Tạo hàm delete trên ViewModel:
- Thêm hàm
deleteSpot
vàoSpotViewModel
. - Hàm này nhận đầu vào là một đối tượng
Spot
. - Sử dụng
guard let
để unwrapID
của spot, nếu không có ID thì in thông báo lỗi. - Bên trong
Task
, sử dụngtry await
để gọi hàmdelete()
trên Firestore document. - Bắt lỗi và in thông báo nếu có lỗi xảy ra trong quá trình xóa.
- Để gọi hàm
deleteSpot
mà không cần khởi tạo class, ta cần khai báo hàm làstatic
(cuối video tác giả cũng update hàm save thành static).
- Thêm hàm
-
Gọi hàm delete từ List View:
- Trong action của swipe button, gọi
SpotViewModel.deleteSpot(spot: spot)
để thực hiện xóa.
- Trong action của swipe button, gọi
-
Chuyển hàm
saveSpot
thành static:- Tương tự như
deleteSpot
, thêmstatic
vàofunc saveSpot
trongSpotViewModel
. - Thay đổi cách gọi hàm
saveSpot
trongSpotDetailView
bằng cách gọi trực tiếp qua classSpotViewModel.saveSpot(spot: spot)
mà không cần tạo instance củaSpotViewModel
nữa, và loại bỏ luôn biến statespotVM
- Tương tự như
-
Sửa lỗi warning:
- Sửa lỗi warning liên quan đến string interpolation trong hàm catch của delete, thay vì dùng
spot.id
, ta sẽ dùng biếnid
đã được unwrap bằngguard let
.
- Sửa lỗi warning liên quan đến string interpolation trong hàm catch của delete, thay vì dùng
Video kết thúc bằng việc review lại ứng dụng và cho thấy CRUD (Create, Read, Update, Delete) hoạt động tốt với dữ liệu trên Cloud Firestore.
Chúc bạn học tập hiệu quả!