前提
Firestore Databaseを利用して、利用規約を表示する画面を実装しようとしています。
現段階では、利用規約のサイトのURLと利用規約のバージョンをStringで取得し、サイトをひとつのViewとして表示しようとしています。
ですが、
db.collection("term_records").getDocuments { querySnapshot, error in
内のコードがコンソールで確かめたところ、動いていないようです。
解決方法を教えていただければと思います。
実現したいこと
Firebase DatabaseからサイトのURLとバージョンを取得し、サイトを表示すること。
発生している問題・エラーメッセージ
2つ目に貼り付けたstructのinit()内のlet terms = initmodel.terms.first!の行で、
Fatal error: Unexpectedly found nil while unwrapping an Optional value
該当のソースコード
FirestoreDatabaseからデータを取得する部分
1class WebViewModel: NSObject, ObservableObject { 2 @Published var terms = [Term]() 3 4 override init() { 5 super.init() 6 getTerm() 7 } 8 9 func getTerm() { 10 let db = Firestore.firestore() 11 db.collection("term_records").getDocuments { querySnapshot, error in 12 if error == nil { 13 // No errors 14 if let snapshot = querySnapshot { 15 DispatchQueue.main.async { 16 self.terms = snapshot.documents.map { d in 17 return Term(url: d["url"] as? String ?? "", version: d["version"] as? String ?? "", id: d.documentID) 18 } 19 } 20 } 21 } 22 else { 23 //Handle the error 24 print("there is an error with gettiing codes from Firebase") 25 } 26 27 } 28 } 29}
struct WebView: UIViewRepresentable { @ObservedObject var model: WebViewModel @AppStorage("Url") var url: String = "" @AppStorage("Version") var version: String = "" init() { let initmodel = WebViewModel() self.model = initmodel let terms = initmodel.terms.first! url = terms.url version = terms.version } func makeUIView(context: Context) -> WKWebView{ print("makeUIViewまできたよ") return WKWebView() } func updateUIView(_ uiView: UIViewType, context: Context) { uiView.load(URLRequest(url: URL(string: url)!)) } }
Termの中身
1struct Term: Identifiable { 2 var url: String 3 var version: String 4 var id: String 5}
補足情報(FW/ツールのバージョンなど)
macOS バージョン12.4 1.1GHz 4コアIntel Core i5
Xcodeバージョン13.4.1
回答1件
あなたの回答
tips
プレビュー