Я искал повсюду и не могу найти ничего, что помогло бы решить мою проблему.
В Cloud Firestore я хочу получить все документы в коллекции, что достаточно просто, например:
let ref = db.collection("users")
ref.getDocuments { (collection, error) in
guard let documents = collection?.documents else {
return
}
// I have an array of documents here
}
Я хочу декодировать этот массив документов, используя Codable Firebase , который отлично работает при получении одного документа:
let user = try? FirestoreDecoder().decode(User.self, from: document.data())
Но я не могу сделать:
let users = try? FirestoreDecoder().decode([User].self, from: documents.map { $0.data() })
например, из моего массива документов из коллекции в качестве аргументов data
: [String: Any]
Я мог бы декодировать каждый документ один за другим в цикле for, но я использую обобщенные значения, поэтому, если я передам [User]
в качестве моего ожидаемого общего ответа, я не смогу затем в своем цикле for увидеть, что такое общий элемент, и насколько мне известно, конвертируйте в User.self
, а не [User].self
.
Любые советы будут с благодарностью.