Ios 函数的作用是多次获取相同的数据

Ios 函数的作用是多次获取相同的数据,ios,swift,firebase,google-cloud-firestore,Ios,Swift,Firebase,Google Cloud Firestore,我正在从关系数据库迁移到NOSQL,我已经阅读了整个Firebase文档,现在我正在着手一个研究项目来了解更多有关它的信息 我试图做的是:我有一个用户配置文件,其中由Auth创建的每个用户将获得一个文档 在这个文档中,我有一个名为groups的数组,它显示了这个用户加入的所有组 我需要根据登录的用户检索此组的列表 然后我使用getDocuments从数据库中检索这些信息 我需要得到的是一个字符串数组,该字符串的组id为每秒pic my current代码正在检索我需要的信息,但它将所有ID作为一

我正在从关系数据库迁移到NOSQL,我已经阅读了整个Firebase文档,现在我正在着手一个研究项目来了解更多有关它的信息

我试图做的是:我有一个用户配置文件,其中由Auth创建的每个用户将获得一个文档

在这个文档中,我有一个名为groups的数组,它显示了这个用户加入的所有组

我需要根据登录的用户检索此组的列表

然后我使用getDocuments从数据库中检索这些信息

我需要得到的是一个字符串数组,该字符串的组id为每秒pic

my current代码正在检索我需要的信息,但它将所有ID作为一个对象获取。因此,如果我有4个组,它将检索4个对象,其中包含用户加入的所有4个组

func getGroups() -> [String] {

    let currentUser = Auth.auth().currentUser?.uid
    let db = Firestore.firestore()
    var groups = [""]
    var groupsArray = [""]

        db.collection(K.Collections.userProfile)
            .whereField(K.DBFields.UserProfile.userId, isEqualTo: currentUser!)
            .getDocuments { (snapshot, error) in
            if let error = error  {
                print(error)
            } else {

                for document in snapshot!.documents {
                    groups = (document.get("groups")) as! [String]
                    //groupsArray.append(groups)
                    print("Group ID: \(groups)")
                    }
            }
        }
return groups
}
我得到的结果如下:

组ID:[8m0W7cQLuSjQCJes2fpL,l84GnZSpIUs43cXO13Qm,unb0LPYOttDN6WogRXDt,ohG09dwyVrAd6GcXa6mx] 组ID:[8m0W7cQLuSjQCJes2fpL,l84GnZSpIUs43cXO13Qm,unb0LPYOttDN6WogRXDt,ohG09dwyVrAd6GcXa6mx] 组ID:[8m0W7cQLuSjQCJes2fpL,l84GnZSpIUs43cXO13Qm,unb0LPYOttDN6WogRXDt,ohG09dwyVrAd6GcXa6mx] 组ID:[8m0W7cQLuSjQCJes2fpL,l84GnZSpIUs43cXO13Qm,unb0LPYOttDN6WogRXDt,ohG09dwyVrAd6GcXa6mx]

我尝试了很多不同的方法来获取正确的数据,但都没有成功

再一次,我只想得到这个数组作为结果: 变量组=[ 8m0W7cQLuSjQCJes2fpL, l84GnZSpIUs43cXO13Qm, unb0LPYOttDN6WogRXDt, ohG09dwyVrAd6GcXa6mx]

非常感谢
莱昂纳多·达马托(Leonardo D'Amato)

我不太了解Swift,但在node中,当我尝试使用替代地图时,出现了不同的结果,您应该使用以下内容:

让dataDescription=snapshot.data.mapString.InitDescripting:??零

printDocument数据:dataDescription


您正在以[String]字符串数组的形式从组中检索值。但随后将该字符串数组打印为单个值

如果要访问Swift中[String]的各个元素,可以在其上循环:

groups = (document.get("groups")) as! [String]
for group in groups {
    print("Group ID \(group).")
}

另请参阅上的Swift文档。

您好,弗兰克,谢谢您的回复。我以前尝试过这个,得到的结果是:组ID:8m0W7cQLuSjQCJes2fpL组ID:l84GnZSpIUs43cXO13Qm组ID:Unb0LpyotDN6Wogrxdt组ID:ohG09dwyVrAd6GcXa6mx组ID:8m0W7cQLuSjQCJes2fpL组ID:l84GnZSpIUs43cXO13Qm组ID:Unb0LpyotDN6Wogrxdt组ID:ohG09dwyVrAd6GcXa6mx组ID:8M0W7CQlusJJES2FPL组ID:l84GnZSpIUs43cXO13Qm组ID:unb0LPYOttDN6WogRXDt组ID:ohG09dwyVrAd6GcXa6mx组ID:8m0W7cQLuSjQCJes2fpL组ID:l84GnZSpIUs43cXO13Qm组ID:unb0LPYOttDN6WogRXDt组ID:ohG09dwyVrAd6GcXa6mx假设检索4个结果,但它重复了相同的4个结果和我拥有的字符串数量相同。如果我有5个组字符串,它将检索5次相同的5组字符串