[英]Retrieving specific Firebase data that is stored in a childByAutoId() Reference (Swift)
这个问题可能很难解释。
这是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"
}
}
}
这是我快速生成每个普通便笺的方式:
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实时数据库实时填充tableview:
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]选择一个。
希望这可以帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.