スクリーンショット_2019-05-16_22

Swiftでタイピングアプリ制作(5)〜Cloud Firestoreを使う①〜

さて、ようやくFirebaseに接続することができた前回でした。

今回はようやく接続することができたので、ログを保存するために、Cloud Firestoreを接続するところまで実装したいと思います。

データベースを作成する。

まず、Firebase Consoleにアクセスして、今回制作しているプロジェクトを開きます。リンクは↓

左のメニューバーにある「Database」を押します。「Database」とは、わたしたちのデータをオンライン(Firebase)に保存しておくことができる仕組みです。後ほどデータを引き出すこともできます。

出てくるウィンドウから、基本的には「ロックモード」を選択し、自分で設定を書きます。「テストモード」を選んでしまうとどのアプリケーションからもアクセスすることができるようになってしまい、大変なことになります。

PodにFirestoreを追加する。

PodfileにFirestoreのパッケージを追加します。ファイルの内容は下記のようにしました。

target 'typelab iOS' do
 use_frameworks!

 pod 'Firebase/Core'
 pod 'Firebase/Firestore'
 pod 'Firebase/Database'

end

target 'typelab macOS' do
 use_frameworks!

end

上記のようにしてpod installを実行します。

AppDelegate.swiftを編集する。

AppDelegate.swiftに下記の行を追加して、データベースを初期化させます。

# import Firebaseの下
import FirebaseDatabase

# func applicationの中、
# FirebaseApp.configure()の下に記載する。

let db = Firestore.firestore()

これによって、dbという定数(一度宣言したら変わらない変数)にFirestoreのデータベースをあてがいました。

dbを呼び出せば、データベースを呼び出すことができます。

保存するプログラムをつくる。

前々回、GameViewController.swiftのなかでprintをつかってtextViewの変更のログを表示させる仕組みを作りました。

では、dbの中身にデータを投入するためのプログラムを書きます。

var ref: DocumentReference? = nil
ref = db.collection("textlog").addDocument(data: textView) { err in
   if let err = err {
       print("Error adding document: \(err)")
   } else {
       print("Document added with ID: \(ref!.documentID)")
   }
}

公式ドキュメントの内容を少し変えました。ではとりあえずテストプログラムが動くか、貼り付けて動かして検証してみましょう。

エラーが出た。

エラーが出ました。一つはAppDelegate.swiftに黄色の注意マーク、そして、GameViewController.swiftに一つです。

どちらもdbにエラーが出ました。_(アンダースコア)にせよというエラーメッセージが出たのですが動かない。。。

次回は解決編!(にしたいです!)




ただ続けることを目的に、毎日更新しております。日々の実践、研究をわかりやすくお伝えできるよう努力します。