У меня есть документы 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, вероятно, не идеален, поэтому любые предложения о том, как я могу заставить это работать или советы для лучшего подхода, будут с благодарностью.