【问题标题】:Firebase Swift 3 Fetching multiple values from a groupFirebase Swift 3 从组中获取多个值
【发布时间】:2017-09-06 09:30:12
【问题描述】:

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

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 语句以确保获取所有值并将其附加到表视图中

我知道在从 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)

【问题讨论】:

    标签: swift xcode uitableview firebase fetch


    【解决方案1】:

    需要使用observe代替observeSingleEvent

    答案:

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

    【讨论】:

      猜你喜欢
      • 2017-12-02
      • 1970-01-01
      • 2020-12-25
      • 1970-01-01
      • 2018-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多