【SwiftUI】Firestoreにデータを追加する

Firestoreでチャットを作っている。

一覧表示までできたので、今回はデータを追加する方法について。

下記のように名前とメッセージと投稿ボタンを配置して、ボタンが押されたらFirestoreにドキュメントデータを追加する。

チャットっぽくなった

まずはUIのコード。

VStackの中に以下の3つを配置する。

            TextField("お名前", text: $name)
                .textFieldStyle(RoundedBorderTextFieldStyle())
            TextField("メッセージ", text: $message)
                .textFieldStyle(RoundedBorderTextFieldStyle())
            Button(action: {
                self.viewModel.addDocument(name: name, message: message)
                message=""
            }, label: {Text("投稿")})
                .padding()

次に本命のドキュメントを追加するコード。

ドキュメントIDを自動生成したい場合にはaddDocumentを使う。

    func addDocument(name:String,message:String){
        // Add a new document with a generated id.
        var ref: DocumentReference? = nil
        ref = db.collection("messages").addDocument(data: [
            "name": name,
            "post": message,
            "time": Timestamp(date:Date())
        ]) { err in
            if let err = err {
                print("Error adding document: \(err)")
            } else {
                print("Document added with ID: \(ref!.documentID)")
            }
        }
    }

Firebaseを使って、シンプルにチャットアプリが実装できた。

CoreDataよりも使い勝手が良いので、データベースを使いたい時にはFirestoreを採用するのが良い気がする。

ABOUTこの記事をかいた人

個人アプリ開発者。Python、Swift、Unityのことを発信します。月間2.5万PVブログ運営。 Twitter:@yamagablog