Обновление представления на основе данных, запрашиваемых из Firebase - PullRequest
0 голосов
/ 10 апреля 2020

У меня есть документы Firebase внутри Коллекции Goals с этими полями:

familySupport: 20
generosity: 0
goalWeek: “04-05-2020"
healthyActivities: 0
id: 85313AC2-6236-4AC3-A519-BA3C0E28B751"
medicalAccess: 0
mentalHealth: 0
mentors: 0
ownerId: “cziIt3FHaSgmLDeDOBjuOOlC8sA3"
positiveFriends: 0
spirituality: 0

Я создаю приложение, которое позволяет пользователям еженедельно регистрировать действия в каждой из нескольких "категорий здоровья". Значения для семейной поддержки, щедрости, здоровой деятельности и т. Д. c. являются Ints и представляют количество точек в этой «категории» за данную неделю.

Я хочу создать представление, которое запрашивает Firebase для получения правильного документа на основе ownerId и goalWeek. Я создал класс goalListener следующим образом:

class GoalsListener: ObservableObject{

    @Published var goals: [[String:Any]] = []

    var dateSelected = Date()

    init(){
        downloadGoals()
    }

    func downloadGoals(){
        let formatter = DateFormatter()
        formatter.dateFormat = kFORMATDATE

        let goalWindow = formatter.string(from: dateSelected.startOfWeek!)

        FirebaseReference(.Goals).whereField(kOWNERID, isEqualTo: Auth.auth().currentUser?.uid).whereField(kGOALWEEK, isEqualTo: goalWindow).addSnapshotListener { (snapshot, error) in
            guard let snapshot = snapshot else { return }

            if(!snapshot.isEmpty){
                for snapshot in snapshot.documents{
                    let currentGoals = snapshot.data() as! [String:Any]
                    self.goals.append(currentGoals)
                }
            }
        }

    }
}

Затем я построил представление с @ObservedObject var goalsListener = GoalsListener(). Однако, когда я пытаюсь получить доступ к goalsListener.goals внутри View, я обнаруживаю, что массив словаря [String:Any] пуст.

У меня такое ощущение, что мой подход к извлечению объекта [String:Any] из Firebase, вероятно, не идеален, поэтому любые предложения о том, как я могу заставить это работать или советы для лучшего подхода, будут с благодарностью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...