gpt4 book ai didi

swift - 无法返回在函数 Swift 中创建的数组

转载 作者:行者123 更新时间:2023-11-28 09:38:59 24 4
gpt4 key购买 nike

我有一个奇怪的问题,我不确定我做错了什么。

我想在 viewDidLoad 中调用以下函数,以从 Firestore 加载集合中的所有文档,这些文档将显示在 TableView 中。

func functionName() -> [String] {

var NameArray = [String]()

db.collection("Names").getDocuments() { (querySnapshot, err) in
if let err = err {
print("Error getting documents: \(err)")
} else {
for document in querySnapshot!.documents {
NameArray.append("\(document.documentID)")
}
}
}
print(NameArray)
print(NameArray.count)

return (NameArray)
}

函数抛出警告result is being ignored。我不想让它沉默,因为我需要这个值,它应该返回一个包含文档名称的数组。

当我尝试下面的代码时,它返回数组并按预期计数。

@IBAction func fetchUsersButton(_ sender: UIButton) {
var NameArray = [String]()

db.collection("Names").getDocuments() { (querySnapshot, err) in
if let err = err {
print("Error getting documents: \(err)")
} else {
for document in querySnapshot!.documents {
NameArray.append("\(document.documentID)")
}
}
print(NameArray)
print(NameArray.count)
}
}

但是,我需要能够返回创建的数组,以便它可以在函数外部使用。有人能帮忙吗?

最佳答案

您需要将它放在完成处理程序中,而不是返回一个数组。

func functionName(_ completion: @escaping ([String]) -> Void) {

var NameArray = [String]()

db.collection("Names").getDocuments() { (querySnapshot, err) in
if let err = err {
print("Error getting documents: \(err)")
} else {
for document in querySnapshot!.documents {
NameArray.append("\(document.documentID)")
}
}

completion(NameArray)
}
}

关于swift - 无法返回在函数 Swift 中创建的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58193483/

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