几天前,我刚刚将Firebase Pod更新到最新版本,并且在调试区域,我收到一条消息,说我必须将时间戳数据类型更新为Date(类似的事情,我实际上忘记了)。
我还必须像下面那样更改数据库设置
let db = Firestore.firestore()
let settings = db.settings
settings.areTimestampsInSnapshotsEnabled = true
db.settings = settings
添加上面的代码后,Xcode调试区域中的错误消息消失。
据我所知,我还必须将客户端中的数据类型从“时间戳”更改为“日期”数据类型,因为我在Xcode的调试区域中的错误消息已经消失,所以我没有更改它。
结果是,我的应用程序中的日期不正确。
能否请您再次分享从时间戳到日期的转换步骤?因为据我所记得,我必须执行一些步骤。我在Firebase文档中找不到它。
非常感谢:)
答案 0 :(得分:8)
这是来自调试器的消息
存储在Firestore中的系统日期对象的行为将更改,并且您的应用可能会中断。 要隐藏此警告并确保您的应用不会中断,您需要在调用任何其他Cloud Firestore方法之前向您的应用添加以下代码:
class Board {
var tiles = Array(100) { Tile() } //Represents a 10x10 playing board
operator fun get(x: Int, y: Int) = tiles[y * 10 + x]
operator fun set(x: Int, y: Int, value: Tile) {
tiles[y * 10 + x] = value
}
}
fun main(args: Array<String>) {
val board = Board()
board[0, 0].value = 42
}
通过此更改,存储在Cloud Firestore中的时间戳将作为Firebase时间戳对象而不是作为系统日期对象被读回。因此,您还需要更新期望日期的代码,而不是期望时间戳的代码。例如:
let db = Firestore.firestore()
let settings = db.settings
settings.areTimestampsInSnapshotsEnabled = true
db.settings = settings
启用新行为时,请审核Date的所有现有用法。在将来的版本中,该行为将更改为新行为,因此,如果不执行这些步骤,则您的应用可能会崩溃。