Swift 3 + Firebase:检查数组内的值是不是存在?
Posted
技术标签:
【中文标题】Swift 3 + Firebase:检查数组内的值是不是存在?【英文标题】:Swift 3 + Firebase: Check if value inside array exists?Swift 3 + Firebase:检查数组内的值是否存在? 【发布时间】:2017-03-22 20:37:47 【问题描述】:我有一个帖子节点,其中包含我的 FB 数据库中的各个帖子。这些帖子每个都有一个users_liked
数组,其中有一个随机生成的键,值是当前用户uid
。我的问题是我希望能够检查该数组中是否已经存在该值(uid),如果存在,请执行某些操作;否则做别的事
我如何实现这一目标?我的 JSON 树在下面。谢谢你。
【问题讨论】:
Firebase 无法检查特定值是否存在。如果您需要这个,通常意味着您应该反转users_liked
并使用 UID 作为密钥。见youtu.be/66lDSYtyils?t=6m17s 和***.com/questions/39149216/…
【参考方案1】:
只需请求该路径的快照并使用.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 语法;这不是我说的语言)
【讨论】:
【参考方案2】:我正在为你写一些代码,然后我意识到你想要 Swift,我使用 Java :S 无论如何,概念大纲应该足够了。创建对“users_liked”节点的 Firebase 数据库引用,并将单个事件值侦听器设置为此引用。接下来,将 datasnapshot 传递给“foreach”循环 swift 等效项,为 datasnapshot 的每个子项(datasnapshot.getChildren())创建一个新的 datasnapshot,“dsChild”。最后通过执行 dsChild.getValue 并利用 equalTo() 检查每个项目是否存在值。希望这会有所帮助,对不起,我不能用 Swift 写出来!
【讨论】:
以上是关于Swift 3 + Firebase:检查数组内的值是不是存在?的主要内容,如果未能解决你的问题,请参考以下文章
Swift - 我如何检查 firebase 服务器是不是可用?