【发布时间】:2022-08-17 00:47:57
【问题描述】:
我想要做的就是在setData() 中设置一个 Firebase 服务器时间戳,但我似乎无法弄清楚如何让它工作。
这是我尝试过的:
for document in snapshot!.documents {
do {
try document.reference.collection(\"Data\").document()
.setData(from: [\"first\" : FieldValue.serverTimestamp(), \"second\" : dataStringArray])
print(\"Data successfully written to firestore.\")
} catch let error {
print(\"Error writing data to firestore: \\(error)\")
}
}
目的是在每次写入数据时将 serverTimestamp 设置为字段,以获取数据写入的历史记录。
它一直显示错误Type of expression is ambiguous without more context,所以我尝试通过将其转换为FieldValue 来给它一些上下文,但后来我得到了相同的ambiguous without more context 问题,所以我尝试将它转换为ServerTimestamp 或Timestamp,我得到了Cannot convert value of type \'FieldValue\' to type \'Timestamp\' in coercion。
它在 Android 中运行良好,只需执行以下操作:
document.reference.collection(\"Data\").document().set(FieldValue.serverTimestamp() to formattedDataList)
但由于某种原因,它在 Swift 中不起作用。我一直在寻找几个小时试图理解这个问题,但一直没有找到一个好的解释。
我也试过这个:
setData(from: [FieldValue.serverTimestamp() : dataStringArray])
但我得到Error writing data to firestore: invalidValue([<FSTServerTimestampFieldValue: 0x280412de0>:
-
没有
\"second\": dataStringArray字段你能做到吗? -
在 iOS 上,您应该使用
Codable结构来表示您的 Firestore 文档。您可以为您的时间戳添加一个property,如果它是nil,那么它将由服务器填写 -
@AhmedShendy 我可以在没有“第二”部分的情况下做到这一点,但我需要包含 dataStringArray。
-
@Paulw11 所以我要做的就是设置一个firebase服务器时间戳,让它可编码?我不太确定该怎么做。你知道有什么好的资源来学习吗?
标签: ios swift firebase google-cloud-firestore timestamp