【Firebase×Swift】データ取得とTableView表示(前編) ~複数ドキュメントの取得~
こんにちは!シオンです。
今日はFirebaseで、検索してきたデータをTableViewなどで表示するやり方についてまとめます。
Firebaseをやったことがある人にとっては当たり前かもしれませんが、僕は最初始めたときにここで結構詰まりました・・・
この記事で初めてFirebaseを使う人の助けになれればと思います!
■手順の解説
今回想定しているのは
「コレクションの中に保存してあるドキュメントデータをTableViewの各セルに当てはめたい!」という状況です。
状況によって多少違ってくるため、確認するといいと思います。
<データ取得から表示までの手順>
①データを取得する
↓
②TableViewのセルに表示するためのデータ型(クラス)を作る
↓
③取ってきたデータを、作ったデータ型に変換する
↓
④TableViewの各セルにデータを当てはめる
という手順でデータを表示します。僕は最初少しこれをみて長いなーと感じました。。
ですが、実際やってみると意外とあっさり解決できるので手順毎にコードと解説をしていきます。
前編では①を解説します。データを取ってくるのは大丈夫!という人は後編へ進んでください!
【Firebase×Swift】データ取得とTableView表示(後編)〜取得データの変換とセル表示〜
■手順1:データを取得する
今回はコレクションの中にあるドキュメントデータを取ってきます。
なので使う関数はgetDocumentsです。
getDocumentsは指定したコレクションの中にある複数のドキュメントデータを取ってくることができます。
//getDocumentsで取ってきたデータのイメージ (array = 取ってきたデータ)
let array = [ドキュメント1,ドキュメント2,ドキュメント3,ドキュメント4,・・・・・]
という感じになります。
今回の想定は
「コレクションの中に保存してあるドキュメントデータをTableViewの各セルに当てはめたい!」という状況なので、この配列を各セルに当て嵌めれば良さそうですね!
では取得していきましょう。
getDocumentsで上記のようにデータを取得するには以下のようなコードになります。
func getData() {
//データがあるコレクションを指定
let Ref = Firestore.firestore().collection("コレクション名")
//getDocumentsでデータを取得
Ref.getDocuments() { (querySnapshot, error) in
if let error = error {
print(error)
return
}
//querySnapshotにドキュメントデータが配列になって入っている。解説します。
<ここから先は後編でやります>
}
<解説>
・querySnapshotには、先ほどgetDocumentsで取ってきたデータのイメージarrayと同じようにデータが入っています。
・querySnapshotという名前は変数なのでなんでも良いです。
今回こう名付けた意味は以下です。この2つを合わせています。
(この名前はFirebaseでよく使われるので覚えておくと良いと思います)
query = 参照先、つまりデータがある場所。
snapshot = ある時点における参照先のデータの全体像、つまりgetDocumentsをした時に指定した場所にあったデータ。
querySnapshotについて詳しく知りたい場合はこちらを参考にしてみてください!
■まとめ
いかがでしょうか?
最初はとっつきにくく感じるかもしれませんが、今後Firebaseを使うのであれば何度も使うことになるものなので理解しておくと楽になるかと思います。(わかりにくい、わからない場合は遠慮なくいってくださるとありがたいです、本当に)
後編ではデータをTableViewに入れるまでを解説しますので、是非参考にしてください!
【Firebase×Swift】データ取得とTableView表示(後編)〜取得データの変換とセル表示〜