まずは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のお役立ち情報