gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 10:29:59 25 4
gpt4 key购买 nike

我是 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com