[Video Summary] Ch. 8.5 CloudFirestore Data Model, MVVM, and SwiftUI (2024)

SwiftUI 6 Th02 2025

Mô tả nhanh

Video này trình bày về kiến trúc MVVM (Model-View-ViewModel), một cách tổ chức code phổ biến cho các ứng dụng iOS/macOS dùng SwiftUI, cùng với cách tổ chức dữ liệu trong Cloud Firestore (NoSQL).

Video

Click vào hình dưới để mở:
Ch. 8.5 CloudFirestore Data Model, MVVM, and SwiftUI (2024)

Mô tả chi tiết

Video này trình bày về kiến trúc MVVM (Model-View-ViewModel), một cách tổ chức code phổ biến cho các ứng dụng iOS/macOS dùng SwiftUI, cùng với cách tổ chức dữ liệu trong Cloud Firestore (NoSQL).
Ch. 8.5 CloudFirestore Data Model, MVVM, and SwiftUI (2024)

Tổng quan về MVVM

  • M (Model): Là bản thiết kế dữ liệu của ứng dụng. Trong Swift, thường được biểu diễn bằng các struct. Ví dụ: một struct Spot chứa các thông tin về một địa điểm ăn uống (tên, địa chỉ...).
  • V (View): Là giao diện người dùng, hiển thị dữ liệu. Trong SwiftUI, view được khai báo dựa trên dữ liệu mà nó nhận được.
  • VM (ViewModel): Là lớp trung gian giữa Model và View. ViewModel chứa logic xử lý dữ liệu, như tạo, đọc, cập nhật, xóa. Thường sử dụng class để quản lý "nguồn dữ liệu chính" (source of truth).

Tại sao nên dùng MVVM?

  • Dễ bảo trì: Code được nhóm theo logic, các thay đổi ít ảnh hưởng đến các thành phần khác.
  • Tái sử dụng: Các thành phần được tách biệt có thể tái sử dụng trong nhiều phần của ứng dụng hoặc trong các dự án khác.
  • Phân công công việc: Dễ dàng phân công các lập trình viên tập trung vào các phần khác nhau của dự án (Model, View hoặc ViewModel).
  • Dễ kiểm thử: Đặc biệt với SwiftUI, code trong ViewModel dễ dàng được kiểm thử bằng Unit Test.

Ứng dụng MVVM vào dự án Snacktacular

  • Model: Bắt đầu với model Spot (struct) chứa thông tin cơ bản về địa điểm ăn uống (tên, địa chỉ...). Sẽ được mở rộng thêm (kinh độ, vĩ độ, đánh giá...) sau này.
  • View: Các view đã được tạo từ trước (login, list views) và các view sẽ được tạo thêm sau này (add/detail spot).
  • ViewModel: Bắt đầu với SpotViewModel (class) để xử lý các thao tác CRUD (tạo, đọc, cập nhật, xóa) dữ liệu.

Tổ chức dữ liệu trên Firestore

  • Firestore là cơ sở dữ liệu NoSQL. Dữ liệu được tổ chức theo dạng:
    • Collections (Bộ sưu tập): Tương tự như các "bảng" trong database SQL.
    • Documents (Tài liệu): Tương tự như các "hàng" trong "bảng".
  • Trong dự án Snacktacular, có 1 collection "spots", mỗi document trong collection này sẽ đại diện cho 1 nhà hàng.
  • Mỗi document có thể có nhiều trường dữ liệu và có thể có cả collection con bên trong nó. Ví dụ, một document (đại diện cho 1 nhà hàng) có thể chứa collection con là reviews (các đánh giá về nhà hàng đó).

Lưu ý

  • Dữ liệu trong document phải khớp với định dạng struct (Model) trong code, nếu không sẽ gây ra lỗi.
  • Firebase Storage được sử dụng để lưu trữ dữ liệu lớn (hình ảnh, âm thanh, video).

Chúc bạn học tập hiệu quả và có những dự án iOS/macOS thật ấn tượng!

Tags