En Swift, para recuperar una matriz de Firestore, uso:
currentDocument.getDocument { (document, error) in if let document = document, document.exists { let people = document.data()!["people"] print(people!) } else { print("Document does not exist") } }Y recibo datos que se ven así
( { name = "Bob"; age = 24; } ) Sin embargo, si tuviera que recuperar el nombre solo, normalmente haría print(document.data()!["people"][0]["name"]) .
Pero la respuesta que obtengo es Value of type 'Any' has no subscripts
¿Cómo accedo a la clave de nombre dentro de ese objeto dentro de la matriz de people ?
El valor devuelto por document.data()!["people"] es de tipo Any y no puede acceder a [0] en Any .
Primero deberá convertir el resultado en una matriz y luego obtener el primer elemento. Si bien no soy un experto en Swift, debería ser algo como esto:
let people = document.data()!["people"]! as [Any] print(people[0])Una mejor manera de escribir la respuesta de @Frank van Puffelen sería:
currentDocument.getDocument { document, error in guard error == nil, let document = document, document.exists, let people = document.get("people") as? [Any] else { return } print(people) } }La segunda línea puede ser un poco larga, pero protege contra todos los errores posibles.