swift - 在 Swift 问题中使用 Firebase 查询中的数据

标签 swift firebase google-cloud-firestore closures

我是 Swift 新手。我正在尝试返回一个包含来自 firebase 查询的数据的数组;但是,我认为关闭会引起问题。我尝试将返回数组放在函数的两侧,并使用 self.在封闭范围内;但是,没有骰子。

下面是我的代码:

//controls avatar collection view in the mainViewController
import Foundation
import Firebase

class AvatarModel{

//connect to firestore
let db=Firestore.firestore()

func getAvatars() -> [Avatar]{

    //set array to two dimensional string array...I tried putting this on both sides of the function using self. within the closure...
    var generatedAvatarArray=[Avatar]()

    //query firebase database
    db.collection("mainViewController").whereField("long", isGreaterThanOrEqualTo: -5).whereField("long", isLessThanOrEqualTo: 5).getDocuments() { (querySnapshot, err) in
        if let err = err {
            print("Error getting documents: \(err)")
        } else {
            for documents in querySnapshot!.documents {
                //parse JSON and prepare data to be added to array
                let JSON=documents.data()
                let avatar=Avatar()
                avatar.fileName=JSON["thumbImage"] as! String
                avatar.userName=JSON["partName"] as! String

                //add db data to array to be returned by function
                generatedAvatarArray.append(avatar)
            }
        }
        //print statement works.  Array is filled with db data from firestore.
        print("%%%\(generatedAvatarArray[0].userName)++++\(generatedAvatarArray[1].userName)")
    }
    //blank array here. no db data from firestore.
    return generatedAvatarArray
}

最佳答案

闭包异步运行。这意味着该方法直接返回一个空的“generatedAvatarArray”。

您可以尝试使用委托(delegate)模式将闭包内部的结果传递给调用方法。

关于swift - 在 Swift 问题中使用 Firebase 查询中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59344210/

相关文章:

ios - swift 2.2 中字符串的长度(按字节计算)

swift - iOS 12 SDK 通用函数返回 Optional.some(nil)

iOS 如何在没有自动布局的情况下设置动态 tableview 单元格高度?

javascript - Firebase Auth 登录区别

google-cloud-firestore - Firestore 安全规则 get() 不起作用

ios - 如何用swift获取播放的歌曲

firebase - Flutter firebase database.set(object) 问题

javascript - 尝试删除单个子项时整个 Firebase 数据库被删除

android - Firebase Firestore 子集合安全查询

javascript - 如何使用Firestore设计模型?