Swift & Firestore - 使用 .arrayUnion() 将字典附加到嵌套数组



我正在创建一个聊天应用程序,用户可以在其中与不同的人开始多次聊天(就像其他聊天应用程序一样(。我正在将Swift与Cloud Firestore一起使用

我的数据库设计如下:

Chat collection: [
"chatMember": ["member1", "member2"],
"createdAt" : Date().timeIntervalSince1970,
"meesages" : []
]

一个聊天室将有"messages"数组,它将有message字典,也就是一个对象。

下面的代码是我试图将消息字典附加到消息数组的地方。

Firebase文档介绍了.arrayUnion()<链接到文档>。但它给了我一个错误,说,

">上下文类型'[Any]'不能与字典文本一起使用">

@IBAction func sendBtnPressed(_ sender: UIButton) {
if let messageBody = messageField.text, let messageSender = Auth.auth().currentUser?.email {
db.collection("collectionName").document("docName").updateData([
//              FieldValue.arrayUnion() does not work for this case.
K.FB.messages: FieldValue.arrayUnion([
"sender": messageSender,
"content": messageBody,
"createdAt": Date().timeIntervalSince1970
])
]) { ... closure }
}
}   

在Cloud Firestore中,我找不到任何与Swift将Dictionary附加到嵌套数组有关的信息。

我在YouTube上发现了一个非常相似的案例<https://youtu.be/LKAXg2drQJQ>但是这是利用Angular来实现的,Angular使用具有CCD_ 2的对象。FieldValue.arrayUnion()似乎适用于其他语言,但不适用于Swift。

如果有人能帮我解决这个问题,那就太棒了。

提前谢谢。

所以基本上你对这段代码所说的是:

K.FB.messages: FieldValue.arrayUnion([
"sender": messageSender,
"content": messageBody,
"createdAt": Date().timeIntervalSince1970
])

是要将字典附加到数组,名称为K.FB.messages常量。但你并不是真的想这么做,而且这是不可能的。您希望将字典数组附加到数组

K.FB.messages: FieldValue.arrayUnion([[
"sender": messageSender,
"content": messageBody,
"createdAt": Date().timeIntervalSince1970
]])

最新更新