【SwiftUI】Firebase/Firestoreを用いたデータ保存

はじめに

本記事の内容は、前回の記事「 【SwiftUI】Firebaseの導入 - nekoyutanekoのブログ 」の続きです。

Firestoreの導入

Podfileに新しくインストールするライブラリを追記します。 今回は「Firebase/Firestore」を追記します。

Pods/Podfile

pod 'Firebase/Analytics'
pod 'Firebase/Firestore'  // 左記を追加

記述を終えたら、ターミナル上でアプリケーションが格納されているディレクトリに移動したのち、 以下のコマンドを実行してください。

% pod update
データベースの作成

Firebase 」 のメニューから「Firestore Database」を選択して、 「データベースの作成」をクリックしてください。

① セキュリティ保護ルールの設定

今回は「テストモードで開始する」を選択します。

<注意点!>
この設定は「すべてのユーザーに対する読み取りと書き込みのアクセス権を可能にしている」ので、セキュリティ上安全ではありません。

そのため、 必ず アプリケーションの使用状況・方法に合わせて、セキュリティの設定を変更するようにしてください。

参考URL:https://firebase.google.com/docs/firestore/security/insecure-rules?hl=ja

② ロケーションの設定

今回は「asia-northeast1(東京)」を選択します。

参考URL:https://firebase.google.com/docs/firestore/locations?hl=ja

選択後、右下の「有効にする」をクリックすると、 データベースの作成が始まります。
作成が完了すると、以下の画面になります。

データの保存

TestFirebase/ContentView.swift

import SwiftUI

struct ContentView: View {
    @ObservedObject var testDataVM = DataModel()
    var body: some View {
        Button(action: {
            testDataVM.addData(country: "日本", prefecture: "東京都")
        }) {
            Text("データ保存の実行")
        }
    }
}

TestFirebase/DataModel.swift

import Foundation
import Firebase

class DataModel: ObservableObject {
    func addData(country: String, prefecture: String) {
        let data = [
            "country": country,
            "prefecture": prefecture
        ]
        
        let db = Firestore.firestore()
        
        db.collection("testDatas").addDocument(data: data) { error in
            if let error = error {
                print("データの保存に失敗しました。\(error)")
                return
            }
            
            print("データの保存に成功しました。")
        }
        
    }
}

addDocumentメソッドにより、データを保存します。
データの保存に成功すると、Firestore Databaseにデータが追加されます。