首页 > 解决方案 > iOS Swift 遍历 Firestore 中的字典项数组

问题描述

我正在尝试遍历以下字典:

Firebase 中的字典

这是我的代码:

Global.sharedInstance.db.collection("usuarios").getDocuments { (snapshot, error) in
    if error != nil {
        print("error de lectura usuarios...")
    } else {
        if let snapshot = snapshot {
            for document in snapshot.documents {
                let data = document.data()
                let txtIdentificador = data["identificador"] as? String ?? ""
                let txtBio = data["bio"] as? String ?? ""
                let txtNombre = data["nombre_usuario"] as? String ?? ""
                let txtFotoPerfil = data["foto_perfil"] as? String ?? ""
                
                var arrFotos = data["fotos"] as? [String: [String:String]]
            }
        }
    }
}

我能够检索前几行,例如 id、传记、姓名等。但是当我尝试访问字典数组时,我不知道。

这是主要思想: 我有一组用户,我用第一个循环“for document in documents...”对其进行迭代,然后每个用户都有一组照片。我想迭代 3 张照片,并且在每次迭代中,我都想检索字段,因此我可以创建一个名为 Image 的对象并将用户与“hasUpload(Image)”相关联。

我想知道如何迭代 X 照片并在每次迭代中检索字段。

像这样的东西:

var arrFotos = data["fotos"] as? [String: [String:String]]
for foto in arrFotos {
    for (key,value) in foto {
        
    }
}

我收到错误:For-in 循环需要 '[String : [String : String]]?符合“顺序”;你的意思是解开可选的吗?

标签: iosfirebasegoogle-cloud-firestore

解决方案


可以在此处找到类似的 StackOverflow 案例,这就是他们解决它的方法:

您可以这样做,其中 x 是索引,token 是元素:

for (x, token) in transcriptCandidate.enumerated() {
}

或者,如果您不需要索引,请执行以下操作:

for token in transcriptCandidate {
}

推荐阅读