在Swift中,要从Firestore检索数组,请使用:
currentDocument.getDocument { (document, error) in
if let document = document, document.exists {
let people = document.data()!["people"]
print(people!)
} else {
print("Document does not exist")
}
}
我收到的数据看起来像这样
(
{
name = "Bob";
age = 24;
}
)
但是,如果我只想检索名称,通常我会print(document.data()!["people"][0]["name"])
。
但是我得到的回复是Value of type 'Any' has no subscripts
如何访问people
数组中该对象内的名称键?
答案 0 :(得分:1)
由document.data()!["people"]
返回的值是Any
类型的,因此您无法访问[0]
上的Any
。
您首先需要将结果转换为数组,然后获取第一项。虽然我不是Swift专家,但应该是这样的:
let people = document.data()!["people"]! as [Any]
print(people[0])
答案 1 :(得分:0)
@Frank van Puffelen回答的更好的写法是:
currentDocument.getDocument { document, error in
guard error == nil, let document = document, document.exists, let people = document.get("people") as? [Any] else { return }
print(people)
}
}
第二行可能会很长,但是可以防止出现任何可能的错误。