[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

Click vào hình dưới để mở:

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:

  1. Thêm Swipe Action vào List View:

    • Sử dụng .swipeActions(edge: .trailing) modifier sau NavigationLink để thêm action delete khi vuốt sang trái.
    • Bên trong swipeActions, tạo một Button 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.
  2. Tạo hàm delete trên ViewModel:

    • Thêm hàm deleteSpot vào SpotViewModel.
    • Hàm này nhận đầu vào là một đối tượng Spot.
    • Sử dụng guard let để unwrap ID của spot, nếu không có ID thì in thông báo lỗi.
    • Bên trong Task, sử dụng try await để gọi hàm delete() 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).
  3. 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.
  4. Chuyển hàm saveSpot thành static:

    • Tương tự như deleteSpot, thêm static vào func saveSpot trong SpotViewModel.
    • Thay đổi cách gọi hàm saveSpot trong SpotDetailView bằng cách gọi trực tiếp qua class SpotViewModel.saveSpot(spot: spot) mà không cần tạo instance của SpotViewModel nữa, và loại bỏ luôn biến state spotVM
  5. 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ến id đã được unwrap bằng guard let.

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ả!