gpt4 book ai didi

ios - 从两个单独的 firebase 数据库中加载两个到 tableview swift

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:13:32 25 4
gpt4 key购买 nike

我正在构建一个非常简单的应用程序,人们点击一个按钮,它使用 firebase 数据库记录他们点击按钮( checkin )的时间。我可以存储签到人员的数据,然后显示签到人员的数据以及所有适当的信息。我已经包含了一张图片来显示我已经在我的 TableViewController 中显示的内容。 This is what my TableView shows right now

我不想只显示已经签到的用户我还想显示还没有签到的用户。

我现在将分享一张照片,展示我的 firebase 数据库是如何设置来存储每个用户的。

How my database is setup to store all users

这是整个数据库的 View ,显示了用户以及已经使用该名称和时间戳签到的用户

Entire database

我还将包括我的 UITableViewController 中的代码,这样每个人都可以看到我是如何只显示已经签到的人的。

 import Firebase

struct checkInStruct {

let userName : String!
let hour : String!
let minutes : String!

}

class checkInDaysTableViewController: UITableViewController {


//Variables
var lastChildNameSegue = ""

var posts = [checkInStruct]()
let user = FIRAuth.auth()?.currentUser

override func viewDidLoad() {
super.viewDidLoad()

let databaseRef = FIRDatabase.database().reference()

let userID = user?.uid

databaseRef.child("users").child("\(userID!)").child("checkins").child("\(lastChildNameSegue)").queryOrderedByKey().observe(.childAdded, with: { (snapshot) in


let userNameSnapValue = snapshot.value as? NSDictionary
let userName = userNameSnapValue?["userName"] as? String


let hourSnapValue = snapshot.value as? NSDictionary
let hour = hourSnapValue?["hour"] as? String

let minutesValue = snapshot.value as? NSDictionary
let minutes = minutesValue?["minutes"] as? String

print(userName!)
print(hour!)
print(minutes!)

self.posts.insert(checkInStruct(userName: userName, hour: hour, minutes: minutes) , at: 0)
self.tableView.reloadData()


})

}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return posts.count
}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell")

let userName = posts[indexPath.row].userName
let hour = posts[indexPath.row].hour
var minute = posts[indexPath.row].minutes

let minuteInt = Int(minute!)

if(minuteInt! >= 0 && minuteInt! <= 9){
let minuteWithZero = "0\(minuteInt!)"
minute = minuteWithZero
}

let label1 = cell?.viewWithTag(1) as! UILabel
label1.text = "\(userName!)"

let label2 = cell?.viewWithTag(2) as! UILabel
label2.text = "Checked In At \(hour!):\(minute!)"

return cell!
}



}

我需要做什么才能加载所有用户的数据并以红色突出显示尚未签到的人?

最佳答案

我认为你应该像这样设计你的数据库。

root -> 用户

"users": [
"{id_user_A}": {
"name": A,
"checkedin": [
"{id_checkedin_1}": {
...
},
"{id_checkedin_2}": {
...
}
]
},
"{id_user_B}": {
"name": B,
"checkedin": []
}
]

并获取所有用户,使用checkedin 属性检查每个用户以了解哪个用户 checkin 。

关于ios - 从两个单独的 firebase 数据库中加载两个到 tableview swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42730405/

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