前提・実現したいこと
FireStoreからデータを取得し、viewに表示させたいが、なにも表示されません。
「取得したいcollectionが含まれている複数のdocument情報を取得し、その情報を元にcollectionを取得し、contentViewに表示させる」ようなコードの組み方をしているのですが、少し複雑なのでその過程で問題が起きてしまっているのかもしれません。
ただ、どこで問題が起きているのか分からないため、ご教示いただけたら幸いです。
以下にコードを記載しています。
発生している問題・エラーメッセージ
エラーメッセージはないが、画面になにも表示されない
該当のソースコード
swiftUI
1 2struct ContentView: View { 3 @ObservedObject var observed = Observer() 4 var body: some View { 5 ScrollView{ 6 VStack{ 7 ForEach(0..<observed.status.count){ num in 8 HomeView(theme: self.observed.theme[num], photoList: self.observed.status[num]) 9 //HomeViewにThemeEntityと[PhotoEntity]を入れ、Viewを表示させる 10 } 11 } 12 } 13 } 14} 15 16//複数の特定テーマの複数の写真を取得 17class Observer: ObservableObject{ 18 @Published var status = [[PhotoEntity]]() 19 @Published var theme = [ThemeEntity]() 20 @ObservedObject var themeObserver = ThemeObserver() 21 22 init() { 23 let db = Firestore.firestore() 24 25 for theme in themeObserver.status { 26 self.theme.append(theme) 27 28 var photoList = [PhotoEntity]() 29 db.collection("Theme").document(theme.id).collection("Photos").addSnapshotListener{(snap, error) in 30 if error != nil { 31 print("(String(describing: error?.localizedDescription))") 32 } 33 34 for i in snap!.documentChanges { 35 let id = i.document.documentID 36 ... 37 let title = i.document.get("title") as? String ?? "" 38 39 photoList.append(PhotoEntity(id: id, ... ,title: title)) 40 } 41 self.status.append(photoList) 42 } 43 } 44 } 45} 46 47//取得したいテーマ(statusがopen)を取得 48class ThemeObserver:ObservableObject { 49 @Published var status = [ThemeEntity]() 50 51 init() { 52 let db = Firestore.firestore() 53 db.collection("Theme").addSnapshotListener{(snap, error) in 54 if error != nil { 55 print("(String(describing: error?.localizedDescription))") 56 } 57 for i in snap!.documentChanges { 58 if i.document.get("status") as? String ?? "" == "open" { 59 let id = i.document.documentID 60 let status = i.document.get("status") as? String ?? "" 61 ... 62 let themeImageURL = i.document.get("themeImageURL") as? String ?? "" 63 64 self.status.append(ThemeEntity(id: id, status: status, ..., themeImageURL: themeImageURL)) 65 } 66 } 67 } 68 } 69} 70 71 72 73
あなたの回答
tips
プレビュー