質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Cloud Firestore

Cloud Firestore は、自動スケーリングと高性能を実現し、アプリケーション開発を簡素化するように構築された NoSQLドキュメントデータベースです。

Q&A

0回答

882閲覧

【SwiftUI】FireStoreから取得したデータが表示されない

Chiaki1111

総合スコア15

Firebase

Firebaseは、Googleが提供するBasSサービスの一つ。リアルタイム通知可能、並びにアクセス制御ができるオブジェクトデータベース機能を備えます。さらに認証機能、アプリケーションのログ解析機能などの利用も可能です。

Cloud Firestore

Cloud Firestore は、自動スケーリングと高性能を実現し、アプリケーション開発を簡素化するように構築された NoSQLドキュメントデータベースです。

0グッド

0クリップ

投稿2020/05/17 04:54

前提・実現したいこと

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問