将Firestore文档添加到Pickerview时出错

时间:2019-05-27 11:41:35

标签: ios swift firebase google-cloud-firestore

我最近在iOS应用程序上进行了很多更改,但现在我陷入了困境。

我正在尝试从Firestore插入数据,如下所示:

firebase

因此,如您所见,我在这里有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之外的所有内容。如何解决这个问题?

1 个答案:

答案 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)
        }
    }
}