Swift Firebase createdAt-时间戳与日期
正在尝试按createdAt对快照数组排序。谷歌从日期格式改为时间戳后的困难 我尝试使用timestamp.dateValue将时间戳转换为日期 我用了这个,在他们用Date的时候很管用Swift Firebase createdAt-时间戳与日期,swift,firebase,Swift,Firebase,正在尝试按createdAt对快照数组排序。谷歌从日期格式改为时间戳后的困难 我尝试使用timestamp.dateValue将时间戳转换为日期 我用了这个,在他们用Date的时候很管用 self.tableData = self.tableData.sorted(by: { $0["createdAt"] as! Date > $1["createdAt"] as! Date }) 我试着使用时间戳,因为你不能排序直接对时间戳-我不能让它工作或有适当的语法 self.tab
self.tableData = self.tableData.sorted(by: {
$0["createdAt"] as! Date > $1["createdAt"] as! Date })
我试着使用时间戳,因为你不能排序直接对时间戳-我不能让它工作或有适当的语法
self.tableData = self.tableData.sorted(by: {
$0["createdAt"] as Timestamp.dateValue() as! Date >
$1["createdAt"] as Timestamp.dateValue() as! Date })
任何帮助都将不胜感激。知道谷歌为什么从日期改为时间戳吗?这使得分类更加困难。我知道您可以在请求期间进行排序,但我需要在数据库请求之后进行排序
我是这样做的:-
let currentArr = commentsArray.sorted(by: {
$0.createdAt!.compare($1.createdAt!) == .orderedDescending
})
映射数据时,将其映射为日期类型变量:-
let createdAt : Date? = snapshotValue["createdAt"] as? Date
然后我对数组进行如下排序:-
let currentArr = commentsArray.sorted(by: {
$0.createdAt!.compare($1.createdAt!) == .orderedDescending
})
或
您可以直接获取已排序的数据,如下所示:-
Firestore.firestore().collection(“samples”).order(by: "createdAt", descending: true).whereField(“sampleId”, isEqualTo: sampleId).addSnapshotListener({ (querySnapSHot, error) in })
时间戳比较方法对您有帮助吗引用createdAt有点模糊,不了解您在该字段中具体存储了什么。另外,您是否可以包括如何在数组中读取和存储该文档/字段的代码?原因是什么?NSDate实现为双精度,当使用快照中的时间戳作为后续查询的一部分时,会丢失精度并导致意外行为。另外,请参阅,因为它可以关闭以恢复以前的行为,注意您应该迁移到较新的时间戳格式。这过去是可行的,但Google目前正在使用时间戳而不是CreateDat的日期。您可以将值作为时间戳存储在firebase中。这是获取时间戳值后的代码。明白了。我希望不必修改我的数据库,也不必按照快照中提供的时间戳值直接排序。是的,除非您将createdAt值存储为时间戳,否则您不需要更改数据库。Google正在更改此设置。Firestore移动到Firebase函数中的时间戳。参考: