ios - 将 Firestore 文档添加到 Pickerview 时出错

标签 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()

        }
    }
}

我收到错误:

Value of type '[QueryDocumentSnapshot]' has no member 'data'

它曾经有 QuerySnapshot!.documents.first 但是当我更改了 Firestore 数据后它就不再工作了。


编辑:

所以。现在的输出是:

["Joche"] ["Joche", "Joche"] ["Putte"] ["Putte", "Putte"] ["Rebecca"] ["Rebecca", "Rebecca"] ["Fredrik"] ["Fredrik", "Fredrik"] ["Anna"] ["Anna", "Anna"] ["Vickan"] ["Vickan", "Vickan"]

这意味着它添加了除 x3 以外的所有内容。如何解决这个问题?

最佳答案

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

关于ios - 将 Firestore 文档添加到 Pickerview 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56325367/

相关文章:

ios - Swift 中的协议(protocol)设计

ios - 将进度从 NSURLSession 发送到 ViewController [swift - iOS]

firebase - React-native ListView排序数据

ios - OpenCV ios 项目崩溃

iphone - 什么时候在 NSURLConnection 委托(delegate)上调用 release?

ios - 如何获取 UITableView 中可编辑单元格的值? swift

swift - 如何在 Flutter 中实现 3D Secure(通过 Visa/MasterCard SecureCode 验证)?

ios - 如何使用 Alamofire、Swift 4 为 UICollectionView 获取 JSON 数据

amazon-web-services - Firebase 身份验证与 AWS Cognito

ios - 使用 Swift 在 Firebase 中添加值而不是更改值