前提・実現したいこと
現在Swift4で、クイズアプリを作ろうとしています。
その準備として、まずは、データベース(Cloud Firestore)から問題のタイトルを取り出し、テーブルビューに表示させようとしています。
ただ、numberOfRowsInSectionの数をうまくデータベースのドキュメント数と結びつけることができません。
どうしたら、データベースのドキュメント数をカウントして、numberOfRowsInSectionに結びつけることができますでしょうか。
よろしくお願いいたします。
発生している問題・エラーメッセージ
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return idList.count //ここで、returnしても0しか返ってきません }
該当のソースコード
TableViewController.swift
1import UIKit 2import Firebase 3 4class TableViewController: UITableViewController { 5 var db : Firestore! 6 var idList:[String] = [] //ドキュメントのIDを入れる変数です 7 8 9 override func viewDidLoad() { 10 super.viewDidLoad() 11 db = Firestore.firestore() 12 readData() //extensionで関数を定義しています 13 } 14 override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 15 return idList.count //idListをカウントしても0しか返ってきません 16 } 17} 18 19extension TableViewController{ 20 func readData(){ 21 db.collection("questions").getDocuments() { (querySnapshot, err) in 22 if let err = err { 23 print("Error getting documents: (err)") 24 } else { 25 for document in querySnapshot!.documents { 26 self.idList.append(document.documentID) 27 } 28 print(self.idList.count) //この時点では、idListの数がカウントできています 29 } 30 } 31 } 32} 33
補足情報(FW/ツールのバージョンなど)
Swift 4.2.1
Xcode 10.1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/06/11 04:12