在Swift中向Firebase数组添加项目而不首先观察数组

时间:2016-05-25 11:23:23

标签: ios swift firebase firebase-realtime-database

目前,我首先通过观察数组,添加新帖子,然后更新ref:

来向我的Firebase数组添加新帖子
REF_USER.child(UID).observeSingleEventOfType(.Value, withBlock: { snapshot in
   if !snapshot.exists() {return}
   if let dict = snapshot.value as? Dictionary<String, AnyObject>, 
      let posts = dict["posts" as? [String] {
      posts.append(newPost)
      REF_USER.child(UID + "/posts").setValue(posts)
   }
}

有没有办法跳过观察的步骤,并立即更新数组中的帖子?假设,例如:

REF_USER.child(UID + "/posts").addToArray(newPost)

1 个答案:

答案 0 :(得分:3)

通常很好的做法是避免使用Firebase中的数组,因为它们非常难以处理;单个元素无法直接访问,无法更新 - 必须重新编写。

不确定为什么要执行问题中列出的步骤添加新帖子,但这是另一种解决方案:

for (long i = 1; i < n; i++)

编辑:

这将导致像这样的结构

thisPostRef = postsRef.childByAutoId //create a new post node
thisPostRef.setValue("here's a new post") //store the post in it

这种结构避免了数组的缺陷。

另一个编辑。 OP询问如何将其写入users / UID / posts节点

posts
  post_id_0: "here's a new post"
  post_id_1: "another post"
  post_id_2: "cool post"