LoginSignup
1
2

Firebaseのタイムスタンプ型をSwiftでDate型にキャスト

Last updated at Posted at 2021-03-01

まずはFirebaseのデータを配列?リスト?として取得するクラスを作成
もともとFirebaseにはdateという名前のタイムスタンプ型のフィールドが登録されている前提


import Foundation
import CodableFirebase 
import Firebase

struct Info : Decodable {
    
    //Firebaseから取得するフィールドを格納する変数を定義
    var id : String?
    var messageId : String?
    var roomid : String?
    var senderid : String?
    var created_date : Date?
    
    static func decode(_ data : [String:Any]) -> Info? {
        do {
            var item = try FirestoreDecoder().decode(Info.self, from: data)
            if let timestamp : Timestamp = data["date"] as? Timestamp {
                item.created_date = timestamp.dateValue()
            }
            return item
        }catch {
            return nil
        }
    }
}


呼び出す時はこんな感じ。

import Foundation
import UIKit
import Firebase


    var Sample_Array: [Info] = []
    var firestore = Firestore.firestore()
  

    override func viewDidLoad() {
        super.viewDidLoad()

        self.firestore.collection("info_data").getDocuments { (snaps, error) in
            guard let documents = snaps?.documents else { return }
            self.Sample_Array = []
            for document in documents {                  
                guard let item = Info.decode(document.data()) else{
                    continue
                }
                self.Sample_Array.append(item)
            }
            print(self.Sample_Array)
        }
    }

Swiftのお役立ち情報

1
2
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
1
2