この問題は説明するのが難しいかもしれません。ここで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" : "[email protected]"
},
"XTjy66z8xEWtEiLx6E0mOo1JEaz2" : {
"email" : "[email protected]"
},
"rfzV1saUf3RtPu7YcqJ0VyAOgmd2" : {
"PlainNote" : {
"-KIZpfbfHcePU3E8HpeU" : {
"note" : "Now i only see my own data",
"title" : "Hello"
}
},
"email" : "[email protected]"
}
}
}
は私が迅速に各プレーンノートを生成する方法である。この後
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は新しいメモが作成されるたびにユニークな参照を作成するため、毎回自分のデータベースを見ることなく、どうすればいいのか分かりません。
(P.S .:理解していると思うが、詳細が必要な場合は、お気軽にお問い合わせください) ありがとうございます。
テーブルビューのデータソースとして配列を使用していると仮定します。テーブルビューが現在ノード2W1Sから3つのノードを表示している場合...ユーザが行1(Aye)をタップすると、なぜ配列[index = 1]からノート情報を取得できますか?オプションで、ユーザーが-KIZY_M3行をタップすると、NISを使用して-KIZY_M3の配列を検索できます。 – Jay