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

时间:2016-02-07 20:09:52

标签: ios swift firebase

我现在第二次使用Firebase,但第一次使用Firebase for iOS。(以及一般的iOS) 所以我使用的是childByAutoId(),它应该像Android的push()一样,对吧?我的代码是:

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

但每次在Firebase中保存照片时,之前保存的照片(现在只有一张)会被新照片覆盖。 ID正在变化,我可以看到,第二个Firebase正在创建新的子图像“图像”,这两张照片分别保存在两个不同的图像子项中。然后就消失了。

所以我错过了一些明显的东西,或者这是一个错误或任何其他建议是非常受欢迎的。

更新:
我的json数据

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

......等等。 在探索之后 - 在写作的那一刻可以看到的是“图像”和“评论”两次出现红色和绿色(新的创建,旧的被删除)。这不是childByAppendingPath()的目标,对吧?

2 个答案:

答案 0 :(得分:3)

我刚刚运行了几段代码:

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 "
    }
  }
}

所以第二个“形象”显然没有取代第一个。

答案 1 :(得分:0)

不确定你是否解决了这个问题。但我也面临同样的问题。我的代码在UIButton操作中,所有新条目都被删除,只保留了最新的条目。在操作结束时将refs设置为nil解决了我的问题,我开始在仪表板中看到多个条目。