加载tableView时接收数据

时间:2016-09-15 11:40:22

标签: ios swift firebase firebase-realtime-database

我正在做一个简单的按钮。当一个人按下相似按钮时,代码正在检查用户是否已经按下之前的。如果没有,它会向Firebase发送数据,说用户喜欢这篇文章,然后将按钮的textColor更改为蓝色。

我的问题是,当用户关闭应用并再次打开它时,没有一个按钮是蓝色的。即使用户喜欢几个帖子。我需要某种代码,可以检查用户是否已经喜欢帖子,并在加载textColor时将UITableViewController更改为蓝色,我猜?

我试图在我的代码中执行此操作,但它会出错。所以有人能告诉我怎么离开这里吗?我喜欢按钮代码:

func checkClickOnLikeButton() {
        let dataPathen = self.pathDB
        // print(dataPathen)


        if let user = FIRAuth.auth()?.currentUser {

            let userId = user.uid



            FIRDatabase.database().reference().child("feed-items").child(dataPathen).child("likesForPost").observeSingleEventOfType(.Value, withBlock: { (snapshot) in
                // Get user value
                self.gottenUserId = snapshot.value![userId] as? Bool

                // print(self.gottenUserId)

                if self.gottenUserId == true {
                    print("Der er trykket high five før")
                } else {
                    print("Der er IKKE trykket like før")
                    let quoteString = [userId: true]
                    FIRDatabase.database().reference().child("feed-items").child(dataPathen).child("likesForPost").updateChildValues(quoteString)
                    let blueButtonColor = UIColor(red: 0/255, green: 122/255, blue: 255/255, alpha: 1.0)
                    self.highFiveButton.setTitleColor(blueButtonColor, forState: UIControlState.Normal)
                }


                // ...
            }) { (error) in
                print(error.localizedDescription)
            }



        }

    }

1 个答案:

答案 0 :(得分:0)

我创建一个适合您数据的结构。然后,我会在数组中本地保存您从数据库中提取的数据。

在构建表格时,即cellForRowAtIndexPath,检查indexPath.row对照数组中的值,看看你是否喜欢它。 如果你喜欢它,即arrayOfUsers [indexPath.row] .contains(“myUserID”),那么调整你的按钮以显示已经喜欢的,并为计数器分配一个数字。否则,什么也不做。

此外 - 保持查询更新而不是执行observeSingleEventOfType(...)也没有什么坏处。我说这是因为您可以告诉查询保持数据,即使用户关闭应用程序也是如此。在iPad上启动您的应用程序,然后返回到手机,iPhone将通过firebase更新。

因此,总结最后一点,我建议将查询更改为观察者一次,并在删除/添加子项时调用特定函数