• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

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

[复制链接]
菜鸟教程小白 发表于 2022-12-11 19:13:25 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

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

我不想只显示已 checkin 的用户我还想显示尚未 checkin 的用户。

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

How my database is setup to store all users

这是整个数据库的 View ,其中显示了用户和已经 checkin 的用户以及名称和时间戳

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!
}



}

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



Best Answer-推荐答案


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

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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap