Я пытаюсь заполнить представление при нажатии кнопки в другом представлении. Когда я использовал свои фиктивные данные, все работало нормально. Однако, когда я переключаюсь на вызов данных моей базы данных Firestore, ничего не появляется. Я еще несколько месяцев изучаю SwiftUI, но таким же образом я вызывал db в другой части моего проекта, и это сработало хорошо. Вот пример кода, который я использую.
Я пытаюсь заполнить представление при нажатии кнопки в другом представлении. Когда я использовал свои фиктивные данные, все работало нормально. Однако, когда я переключаюсь на вызов данных моей базы данных Firestore, ничего не появляется. Я еще несколько месяцев изучаю SwiftUI, но таким же образом я вызывал db в другой части моего проекта, и это сработало хорошо. Вот пример кода, который я использую. [code]import SwiftUI import FirebaseFirestore import FirebaseFirestoreSwift
struct RewardsView: View {
// Dummy Data // var rewardItems: [Reward] = [ // .init(RewardText: "10% Off Next Haircut", RewardRedeemed: false, rewardPhoto: "crown_kings_main_photo", costOfReward: 10), // .init(RewardText: "10% Off Extra Service", RewardRedeemed: true, rewardPhoto: "crown_kings_main_photo", costOfReward: 8), // .init(RewardText: "20% Next Haircut", RewardRedeemed: false, rewardPhoto: "crown_kings_main_photo", costOfReward: 15), // .init(RewardText: "30% off Next Haircut", RewardRedeemed: false, rewardPhoto: "crown_kings_main_photo", costOfReward: 20), // .init(RewardText: "25% Off Next Haircut", RewardRedeemed: true, rewardPhoto: "crown_kings_main_photo", costOfReward: 18), // .init(RewardText: "45% Off Next Haircut", RewardRedeemed: true, rewardPhoto: "crown_kings_main_photo", costOfReward: 30) // ]
@EnvironmentObject private var rewardsViewModel: RewardViewModel @EnvironmentObject private var loyaltyViewModel: LoyaltyViewModel
@State var rewards: [Reward] = []
func getRewards() async throws -> [Reward]{ let db = Firestore.firestore() let snapshot = try await db.collection("redeemRewards").getDocuments() let rewards = snapshot.documents.compactMap{try? $0.data(as: Reward.self)}
struct Reward: Identifiable, Codable,Hashable { @DocumentID var id: String? let rewardText: String let rewardRedeemed: Bool let rewardPhoto: String let costOfReward: CGFloat let timestamp: Timestamp let userId: String let remainingPoints: CGFloat
static func == (lhs: Reward, rhs: Reward) -> Bool { lhs.id == rhs.id } } [/code] Возможно, я неправильно понимаю, как создается представление во время выполнения? Спасибо за помощь и внимание.