在 Swift Issue 中使用来自 Firebase 查询的数据



我是 Swift 的新手。 我正在尝试返回一个包含来自火基查询的数据的数组;但是,我认为关闭引起了问题。 我尝试将返回数组放在函数的两侧,并使用 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
}

闭包异步运行。这意味着该方法直接返回一个空的"生成的头像数组"。

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

最新更新