2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Swift5] FireStoreでカスタムオブジェクトを扱う

Posted at

はじめに

Cloud Firestoreにデータを追加する際に、Codableを使用したいと思ったところ、サポートされているようなので確認してみました。備忘録です。

Map または Dictionary オブジェクトを使うとドキュメントを表しにくいことが多いため、Cloud Firestore では、カスタムクラスを使ったドキュメント作成をサポートしています。Cloud Firestore は、オブジェクトをサポートされているデータ型に変換します。

参考: Cloud Firestore にデータを追加する

実装方法

以下、公式ドキュメントのコードを引用しています。

public struct City: Codable {

    let name: String
    let state: String?
    let country: String?
    let isCapital: Bool?
    let population: Int64?

    enum CodingKeys: String, CodingKey {
        case name
        case state
        case country
        case isCapital = "capital"
        case population
    }

}
let city = City(name: "Los Angeles",
                state: "CA",
                country: "USA",
                isCapital: false,
                population: 5000000)

do {
    try db.collection("cities").document("LA").setData(from: city)
} catch let error {
    print("Error writing city to Firestore: \(error)")
}

上記コードのように、複雑なデータも綺麗にまとめて追加することができます。
ここで一点注意が必要です
今回、私はプロジェクトにFirestoreをCocoaPodsでインストールしてFirebaseモジュールをインポートしていたのですが、これでは上記のコードにもあるsetData(from:)メソッドは使用できません。
方法としては、まずpodfileに以下を追加します。

Podfile
pod FirebaseFirestoreSwift

あとは、

import FirebaseFirestoreSwift

で使用できるようになります。

最後に

カスタムなデータ型をFirestoreに追加したいケースは結構ありそうなので役立てば良いなと思います。

参考文献

以下の情報を参考にしました
公式の方法でFirestoreでCodable #firebase #firestore #codable

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?