检索存储在 childByAutoId() 引用 (Swift) 中的特定 Firebase 数据



这个问题可能很难解释。

以下是Firebase生成的JSON:

{
  "users" : {
    "2W1Sse5kiZarFQ5k8UKjP87D8Rk2" : {
      "PlainNote" : {
        "-KIZYVAGZQczTSI1L4Qi" : {
          "note" : "Finally works",
          "title" : "Whats up"
        },
        "-KIZY_M3FMW0m8mgx4Am" : {
          "note" : "Aye",
          "title" : "Db"
        },
        "-KIZpAEsa7-wSCOJfHvv" : {
          "note" : "This wont work for some reason",
          "title" : "Helloo"
        }
      },
      "email" : "jacobsiegel@gmail.com"
    },
    "XTjy66z8xEWtEiLx6E0mOo1JEaz2" : {
      "email" : "123@gmail.com"
    },
    "rfzV1saUf3RtPu7YcqJ0VyAOgmd2" : {
      "PlainNote" : {
        "-KIZpfbfHcePU3E8HpeU" : {
          "note" : "Now i only see my own data",
          "title" : "Hello"
        }
      },
      "email" : "whatsup@gmail.com"
    }
  }
}

以下是我如何在 swift 中生成每个普通音符:

let title = plainNoteTitleTextField.text!
    let note = bodyOfNoteTextView.text!
    let usersId = FIRAuth.auth()?.currentUser?.uid
        if title != "" || note != "" {
            let data = [
                "title": title,
                "note": note
            ]
self.usersRef.child(usersId!).child("PlainNote").childByAutoId().setValue(data)

在此之后,我使用 firebase 实时数据库实时填充表格视图:

override func viewDidAppear(animated: Bool) {
    var localNotes = [String]()
    var localBody = [String]()
    let usersId = FIRAuth.auth()?.currentUser?.uid
    usersRef.child(usersId!).child("PlainNote").observeEventType(.ChildAdded, withBlock: { snapshot in
        let title = snapshot.value?.objectForKey("title") as! String
        var x = snapshot.value?.objectForKey("note") as! String
        if x.characters.count > 20 {
            x = x[0...20] + "..."
        } else {
            x = x + "..."
        }
        localNotes.insert(title, atIndex: 0)
        localBody.insert(x, atIndex: 0)
        self.notes = localNotes
        self.noteBody = localBody
        self.tableView.reloadData()
    })
}

的问题:我正在尝试访问 PlainNote 引用,以便在点击表视图单元格时,我可以从 firebase 中提取特定的注释标题和正文。 我不确定如果不每次都查看我的数据库,我会怎么做,因为每次创建新注释时,Firebase 都会创建一个唯一的引用。

(PS:如果你认为你明白,但需要更多细节,不要犹豫,问!谢谢。

不确定

你是否有答案,但这里以防万一(我遇到了同样的问题)。我的理解是,您希望获取每次生成的唯一密钥,以便可以访问存储在单个密钥下的数据。您可以生成一个字符串数组,然后使用它来提取单个索引处的键值,然后将其反馈到数据检索代码中。这是这样完成的:

usersRef.child(usersId!).child("PlainNote").observeEventType(.ChildAdded, withBlock: { snapshot in
var idKeys = [String]()  //this will hold your keys
for snap in snapshot.children.allObjects {
let id = snap as! FIRDataSnapshot
idKeys.append(String(id.key))
}}

现在您有了密钥,您可以使用 var selectedKey = idKeys[x] 选择一个密钥。

希望这有帮助

最新更新