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を採用するのが良い気がする。