繁体   English   中英

iOS的Firebase:childByAutoId()每次都会覆盖同一个孩子

[英]Firebase for iOS: childByAutoId() overrides the same child every time

我现在第二次使用Firebase,但第一次使用iOS的Firebase。(以及与iOS一起使用)所以我正在使用childByAutoId(),它应该类似于Android的push(),对吗? 我的代码是:

let quoteString = ["base64": base64String]
let refPhotos = refPlace.childByAppendingPath("Images")
let refBase54 = refPhotos.childByAutoId()
refBase54.setValue(quoteString)

但是,每次将照片保存在Firebase中时,以前保存的照片(目前仅一张)都将被新的照片覆盖。 ID正在更改,我可以看到第二个Firebase正在创建新的子级“图像”,并且这两张照片分别保存在Place的两个不同“图像”子级中。 然后它消失了。

因此,我是否遗漏了一些明显的东西,或者这是一个错误或任何其他建议,我们非常欢迎。

更新:
我的json数据

"Places" : {
    "ChIJMaArcCHP5zsRKU_FpbNldp8" : {
      "Comments" : {
        "-K9xX2KBCiOZMthtbxSy" : "Foo"
     },
     "ID" : "ChIJMaArcCHP5zsRKU_FpbNldp8",
     "Images" : {
        "-K9xX2KUPSLGvFZpI-XL" : {
          "base64" : "very long"
          }

... 等等。 经过一番探索后,在撰写本文时可以看到“图像”和“评论”都以红色和绿色两次出现(创建了新的,删除了旧的)。 这不是childByAppendingPath()的目标,对吗?

我只运行了几段:

var rootRef = Firebase(url: "https://stackoverflow.firebaseio.com/35258493")

override func viewDidLoad() {
    super.viewDidLoad()

    let quoteString = ["base64": "SAIUH IE WE E EUWG EWG YGEFWU GEWOGEW "]
    let refPhotos = rootRef.childByAppendingPath("Images")
    let refBase54 = refPhotos.childByAutoId()
    refBase54.setValue(quoteString)
}

并最终得到以下数据:

{
  "Images": {
    "-K9y4C3NhndlH9LwR7B4": {
      "base64": "SAIUH IE WE E EUWG EWG YGEFWU GEWOGEW "
    },
    "-K9y4I3otW6hV59C6Z2G": {
      "base64": "SAIUH IE WE E EUWG EWG YGEFWU GEWOGEW "
    }
  }
}

因此,第二个“图像”显然不能替代第一个。

不知道您是否解决了这个问题。 但是我也面临着同样的问题。 我的代码在UIButton动作中,所有新条目均被删除,仅保留了最新条目。 在操作结束时将refs设置为nil可以解决我的问题,并且我开始在仪表板中看到多个条目。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM