我最近在iOS应用程序上进行了很多更改,但现在我陷入了困境。
我正在尝试从Firestore插入数据,如下所示:
因此,如您所见,我在这里有6个不同的名字。
这是要插入pickerView的代码。
func getPerson()
{
let authentication = Auth.auth().currentUser?.uid
db.collection("users").document(authentication!).collection("person").getDocuments { (QuerySnapshot, err) in
//If error is not equal to nil
if err != nil
{
print("Error getting documents: \(String(describing: err))");
}
//Succeded
else
{
//For-loop
for _ in QuerySnapshot!.documents
{
//Cleaning the array for the new values
self.personArray.removeAll()
let document = QuerySnapshot!.documents
let data = document.data() //HERE IS THE ERROR
data.forEach { (item) in
if let person1Data = data["name"] as? String
{
self.personArray.append(person1Data)
print(self.personArray)
}
}
}
self.pickerView.reloadAllComponents()
}
}
}
我遇到了错误:
“ [QueryDocumentSnapshot]”类型的值没有成员“数据”
它曾经有QuerySnapshot!.documents.first
但是当我更改了Firestore数据后,它不再起作用。
编辑:
所以。现在的输出是:
[“ Joche”] [“ Joche”,“ Joche”] [“ Putte”] [“ Putte”,“ Putte”] [“ Rebecca”] [“ Rebecca”,“ Rebecca”] [“ Fredrik”] [“ Fredrik”,“ Fredrik”] [“ Anna”] [“ Anna”,“ Anna”] [“ Vickan”] [“ Vickan”,“ Vickan”]
这意味着它将添加除x3之外的所有内容。如何解决这个问题?
答案 0 :(得分:1)
data
是单个QueryDocumentSnapshot
而不是数组的实例方法,您需要
self.personArray.removeAll()
for elem in querySnapshot!.documents {
let data = elem.document.data()
data.forEach {
if let person1Data = $0["name"] as? String {
self.personArray.append(person1Data)
print(self.personArray)
}
}
}