LoginSignup
0
0

More than 3 years have passed since last update.

Firestore データの追加 現在時刻を配列に格納する (Swift)

Posted at

現在時刻を何度も取得して、Firestoreドキュメントの配列に格納していくやり方で困ったので、メモ&共有。

ポイント1. 現在時刻はTimestamp(date: Date())で取得。

Fieldvalue.timestamp() で時刻を取得することもできるんですが、
これをFirestoreのTimestamp配列フィールドに入れようとするとエラーになります。

2020年3月時点では、Fieldvalue.timestamp()は配列に対応していないようです。

よって、公式ドキュメントにさらっと書いてある「Timestamp(date: Date())」で現在時刻を取得してTimestamp配列に入れると、こちらは問題なし。

ポイント2.arrayUnionは配列の新規作成でも使える

公式ドキュメントでは、arrayUnionは「配列がある場合に」と記載されていますが、以下のように、配列がない場合でも1番目の配列要素を作成してくれました。

以上、ご参考まで。

    let historyRef = db.collection("history").document(String(user!.uid))

    historyRef.setData([
        "userid" : String(user!.uid),//ユーザID
        "objectid" : objectid,
        //arrayUnionで、初回配列がない場合でもた1個目の配列要素を自動で追加してくれる
        "history" : FieldValue.arrayUnion([Timestamp(date: Date())])
    ], merge: true
        ) { err in
        if let err = err {
            print("Error adding document: \(err)")
        } else {
            print("Document added with ID")
        }
    }
0
0
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
0
0