Я создаю приложение чата, в котором пользователь может запускать несколько чатов с другим человеком (как и остальные приложения чата). Я использую Swift с Cloud Firestore .
Моя база данных выглядит следующим образом:
Chat collection: [
"chatMember": ["member1", "member2"],
"createdAt" : Date().timeIntervalSince1970,
"meesages" : []
]
В одной комнате чата будет массив 'messages', и он будет иметь message словари aka объект.
Ниже кода я пытаюсь добавить словарь сообщений в массив сообщений .
В Firebase do c вводится .arrayUnion()
<<a href="https://firebase.google.com/docs/firestore/manage-data/add-data?authuser=0#update_elements_in_an_array" rel="nofollow noreferrer"> LINK к документу>. Но из-за этого возникает ошибка:
" Контекстный тип '[Любой]' не может использоваться с литералом словаря "
@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 }
}
}
Я не могу найти ни одного информация, конкретно связанная с добавлением словаря Swift во вложенный массив в Cloud Firestore.
Я нашел очень похожий случай на YouTube <<a href="https://youtu.be/LKAXg2drQJQ" rel="nofollow noreferrer">https://youtu.be/LKAXg2drQJQ>, но это сделано с Angular, в котором используется объект с { ...curly bracket}
. FieldValue.arrayUnion()
, кажется, работает на других языках, но не на Swift.
Было бы здорово, если бы кто-то, кто решил эту проблему, помог мне.
Заранее спасибо.