Swift 3 + Firebase:检查数组中的值是否存在?

时间:2017-03-22 20:37:47

标签: ios swift firebase swift3 firebase-realtime-database

我有一个帖子节点,用于保存我的FB数据库中的各个帖子。这些帖子每个都有一个users_liked数组,其中包含一个随机生成的键,其值为当前用户uid。我的问题是我希望能够检查此数组中是否已存在值(uid),如果存在,则执行某些操作;否则做其他事情

我如何实现这一目标?我的JSON树在下面。谢谢。 enter image description here

2 个答案:

答案 0 :(得分:2)

只需为该路径申请快照,然后使用.exists()

var postid = "-KGNY..."
var uid = FIRAuth.auth()?.currentUser?.uid
var ref = FIRDatabase.database().reference()

ref.child("posts").child(postid).child("users_liked").child(uid!)
   .observeSingleEvent(of: .value, with: { (snapshot) in
  // Get user value
  if snapshot.exists() == true {
     print("exists")
  }
  else {
     print("does not exist")
  }
}) { (error) in
    print(error.localizedDescription)
}

(原谅我糟糕的Swift语法;它不是我说的语言)

答案 1 :(得分:0)

我正在为你写出一些代码,然后我意识到你想要Swift,我使用Java:S无论如何,概念大纲应该足够了。创建对“users_liked”节点的Firebase数据库引用,并为此引用设置单个事件值侦听器。接下来,将datasnapshot传递给“foreach”循环swift等效项,为datasnapshot的每个子项(datasnapshot.getChildren())创建一个新的数据快照“dsChild”。最后通过执行dsChild.getValue并使用equalTo()来检查每个项目是否存在值。希望这会有所帮助,抱歉我无法在Swift中写出来!