我正在尝试使用FirebaseDecoder()解码firebase集合。这是我使用的模型

方法1

struct firebaseApplication:Codable {

var uid:String?
var status:String?
var jobId:String?
var companyId:String?
var createdDate: Timestamp? // or  //    Date? // or // String?

}


如果我评论createdDate然后结果越来越。否则没有结果。我尝试将createdDate设置为Timestamp?Date?string?,所有情况均无结果。

我尝试了另一种方式,它工作正常,这是

方法2

struct ApplicationCollection:CustomStringConvertible {
var description: String
var uid: String
var status:String
var jobId:String
var companyId:String
var createdDate:Date

init(Dict:[String:Any]) {

    self.uid = Dict["uid"] as? String ?? ""
    self.status = Dict["status"] as? String ?? ""
    self.jobId = Dict["jobId"] as? String ?? ""
    self.companyId = Dict["companyId"] as? String ?? ""
    let str = Dict["createdDate"] as? Timestamp ?? Timestamp()
    self.createdDate = str.dateValue()
    self.description = "[uid: \(uid),status: \(status),jobId: \(jobId),companyId: \(companyId),createdDate: \(createdDate)]"

}

init?(data: Data) {
    guard let json = (try? JSONSerialization.jsonObject(with: data)) as? [String: Any] else { return nil }
    self.init(Dict: json)
}
init?(json: String) {
    self.init(data: Data(json.utf8))
}
}


方法2正常工作,将所有数据与createDate一起使用

为什么在方法1中没有得到createDate?。我错过了什么吗?

如何解决

最佳答案

我一直在使用https://github.com/alickbass/CodableFirebase项目来为我节省很多有关此类内容的代码。它在处理FireStore方面确实有所帮助,并且还可以处理时间戳。

07-24 09:55