gpt4 book ai didi

swift - Firebase Swift 3 从组中获取多个值

转载 作者:行者123 更新时间:2023-11-28 08:02:57 25 4
gpt4 key购买 nike

我希望能够通过从存储在我的数据库中的键中获取用户的 UID 值来在 TableView 中列出用户。截至目前,代码仅获取数据库中的第一个值,而不是所有值。这是获取申请人的代码。

func loadApplicants() {
let usersRef = ref.child("users")
usersRef.observe(.value, with: { (users) in

var resultArray = [UserClass]()

for user in users.children {
let user = UserClass(snapshot: user as! DataSnapshot)

if user.uid == self.job.userID {
let appRef = self.ref.child("jobs").child(self.job.postID).child("applicants")
appRef.queryOrderedByKey().observeSingleEvent(of: .childAdded, with: { (snapshot) in
let sValue = snapshot.value
resultArray.append(user)
})
}
}
}) { (error) in
print(error.localizedDescription)
}
}

这是我的数据库的样子,其中存储了用户的 UID。

jobs
"Job ID"
applicants:
-KtLJaQnFMnyI-MDWpys:"8R6ZAojX0FNO7aSd2mm5aQXQFpk1"
-KtLLBFU_aVS_xfSpw1k:"GGqjtYvwSwQw9hQCVpF4lHN0kMI3"

如果我要运行该应用程序,它会获取 UID:“8R6ZAojX0FNO7aSd2mm5aQXQFpk1”我如何实现 for 循环或 if 语句以确保获取所有值并将其附加到 TableView 中

我知道在从 AuthService 调用 fetchApplicants 之前我需要一个 for 循环,因为它只获取一个 UID,但我不知道它会去哪里。

谢谢。

附言这是我试过的

func loadApplicants() {
let jobID = job.postID
let appRef = ref.child("jobs").child(jobID!).child("applicants")
appRef.queryOrderedByKey().observeSingleEvent(of: .childAdded, with: { (snapshot) in
if let applicants = snapshot.value! as? [String:AnyObject] {
for (value) in applicants {
self.authService.fetchApplicants(applicantID: "\(value!)", completion: { (users) in
self.usersArray = users
self.tableView.reloadData()
})
}
}
})
}

但是输出是:

(key: "-KtLLBFU_aVS_xfSpw1k", value: GGqjtYvwSwQw9hQCVpF4lHN0kMI3)
(key: "-KtLJaQnFMnyI-MDWpys", value: 8R6ZAojX0FNO7aSd2mm5aQXQFpk1)

最佳答案

需要使用 observe 而不是 observeSingleEvent

回答:

appRef.queryOrderedByKey().observe(.childAdded, with: { (snapshot) in

关于swift - Firebase Swift 3 从组中获取多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46071599/

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