[Video Summary] Ch. 8.11 Creating Mock Data SwiftUI Previews When Using Cloud Firestore & Firebase Storage (2024)
Mô tả nhanh
Video này hướng dẫn cách tạo dữ liệu mock cho preview SwiftUI khi sử dụng Cloud Firestore và Firebase Storage. Đồng thời, video cũng hướng dẫn cách hiển thị dữ liệu mock này chỉ trong preview và dữ liệu thật từ Firestore khi ứng dụng chạy trên simulator hoặc thiết bị.
Video
Mô tả chi tiết
Video này hướng dẫn cách tạo dữ liệu mock cho preview SwiftUI khi sử dụng Cloud Firestore và Firebase Storage. Đồng thời, video cũng hướng dẫn cách hiển thị dữ liệu mock này chỉ trong preview và dữ liệu thật từ Firestore khi ứng dụng chạy trên simulator hoặc thiết bị.
Các bước thực hiện:
-
Tạo thuộc tính preview cho
Spot
class:- Mở rộng
Spot
class bằng cách thêm một extension. - Tạo một static property có tên
preview
kiểuSpot
. - Bên trong
preview
, tạo một instancenewSpot
củaSpot
với các giá trị mock (id: "1", name: "Boston Public Market", address: "Boston, ma"). - Trả về
newSpot
từpreview
. - Sử dụng
Spot.preview
trongPreviewProvider
củaSpotDetailView
thay vì giá trị literal.
- Mở rộng
-
Thay đổi tên biến
photos
thànhFSPhotos
:- Đổi tên biến chứa dữ liệu Firestore từ
photos
thànhFSPhotos
. - Cập nhật tên biến trong
task
ở nơi load dữ liệu từ Firestore.
- Đổi tên biến chứa dữ liệu Firestore từ
-
Tạo computed property
photos
:- Tạo một computed property
photos
kiểu[Photo]
. - Sử dụng
ProcessInfo.processInfo.environment["XCODE_RUNNING_FOR_PREVIEWS"] == "1"
để kiểm tra xem có đang chạy trong preview hay không. - Nếu đang trong preview, trả về array chứa các
photo.preview
mock data (6 ảnh pizza từ Wikipedia). - Nếu không đang trong preview (đang chạy trong simulator hoặc app), trả về
FSPhotos
(dữ liệu từ Firestore).
- Tạo một computed property
-
Sửa lỗi hiển thị tên người dùng
- Sửa lại initializer của class
Photo
để lấy email của user đang đăng nhập thay vì chuỗi rỗng, dùngAuth.auth().currentUser?.email ?? ""
.
- Sửa lại initializer của class
Giải thích thêm:
- Việc sử dụng computed property
photos
giúp đảm bảo rằng dữ liệu sẽ tự động được cập nhật nếu có thay đổi từ Firestore. (Nếu ta dùng State variable thì sẽ không reactive) - Đoạn code kiểm tra
processInfo.processInfo.environment["XCODE_RUNNING_FOR_PREVIEWS"] == "1"
là cách để biết liệu app đang hoạt động ở chế độ Preview hay không.
Video kết thúc bằng cách kiểm tra trên simulator, và sửa lỗi hiển thị tên người dùng trong chi tiết ảnh.
Chúc bạn học tập hiệu quả!