【发布时间】:2016-05-25 01:38:38
【问题描述】:
这个问题可能很难解释。
这是由 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 引用,以便在点击 tableview 单元格时,我可以从 firebase 中提取特定的注释标题和正文。如果不每次都查看我的数据库,我不确定该怎么做,因为每次创建新笔记时,firebase 都会创建一个唯一的引用。
(P.S.:如果您认为您了解,但需要更多详细信息,请不要犹豫!) 谢谢。
【问题讨论】:
-
假设您使用数组作为表格视图的数据源;如果 tableview 当前显示来自节点 2W1S 的三个节点......当用户点击第 1 行(Aye)时,为什么只能从数组 [index = 1] 中获取注释信息?或者,如果用户点击行 -KIZY_M3,您可以使用 NSPredicate 在数组中搜索 -KIZY_M3。
标签: ios json database swift firebase