[英]TableViewCell Data from Firebase Database
所以基本上我想從我的數據庫中獲取Holes並將它們放在tableView中,但我真的不知道如何。 我無法弄清楚如何讓細胞獲得洞數的標題。
這是我的數據庫:
這是我的viewcontroller:
import UIKit
import Firebase
class HolesViewController: UITableViewController {
//FirebaseRefrences
var ref = FIRDatabaseReference.init()
var holes: [FIRDataSnapshot]! = []
override func viewDidLoad() {
//ViewDidLoad
//Refrences to Firebase
ref = FIRDatabase.database().reference()
let CoursesRef = ref.child("Courses")
//snapshot
CoursesRef.observeEventType(.ChildAdded, withBlock: { snapshpt in
self.holes.append(snapshpt)
self.tableView.reloadData()
})
}
override func viewDidAppear(animated: Bool) {
//ViewDidAppear
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.holes.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell: UITableViewCell! = self.tableView.dequeueReusableCellWithIdentifier("HoleCell")
let holesSnap = self.holes[indexPath.row]
/*
??????
*/
return cell
}
override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
return true
}
}
我可以看到你的holes
數組實際上是一個Course快照數組。
如果你想要一個包含所有課程所有漏洞的數組,你需要使用以下內容
self.holes = snapshpt.childSnapshotForPath("Holes").children.allObjects as [FIRDataSnapshot]
如果您只想獲得特定課程的漏洞,您應該像這樣檢索您的數據
ref.child("Courses").child(courseId).child("Holes").observeEventType(.ChildAdded withBlock: { snapshot in
self.holes.append(snapshot)
}
有一次你在holes[indexPath.row]
有Holes快照(每個孔一個快照),你只需要將單元格textLabel
設置為快照值。
cell.textLabel = holes[indexPath.row].value as! String
我將為您提供有關此主題的一些信息,然后盡力以這種方式告訴您。
首先,給出以下結構:
courses
course_01
holes
1: hole 1
2: hole 2
3: hole 3
name: course name 1
course_02
holes
0: hole 0
1: hole 1
2: hole 2
name: course name 2
和一些Firebase代碼來讀取數據
self.myRootRef.childByAppendingPath("courses/course_01")
thisCourseRef.observeSingleEventOfType(.Value, withBlock: { snapshot in
let name = snapshot.value["name"] as! String
let holes = snapshot.value["holes"] as! NSArray
print(name)
print(holes)
})
首先要注意的是Firebase直接支持NSArray,因此您可以輕松地將孔直接讀入數組“孔”
當為course_01運行代碼時,這些是結果
course name 1
(
"<null>",
"hole 1",
"hole 2",
"hole 3"
)
然后當我們為course_02運行它時......
course name 2
(
"hole 0",
"hole 1",
"hole 2"
)
Firebase中的數組基於零,因此它在第一個示例中為第0個元素分配NULL。 因此,#1洞真的需要成為Firebase數組中的第0個元素。
話雖這么說,讓我們說有一個特殊的事件,全國#7天。 所以你想把#7洞的名字改成別的......說'第7洞,關心的洞'
使用Firebase陣列時,您必須讀入並覆蓋整個節點(“洞”節點,lol),因為您無法訪問陣列中的各個元素。
更好的選擇是格式化您的Firebase結構:
holes
-Y9989jaik9
name: hole 0
hole_num: 0
-Juiijaie898
name: hole 1
hole_num: 1
.
.
.
-Ykmi9mms9889
name: Hole 7, the hole that cares
hole_num: 7
而真正酷的是你可以動態地重命名這些洞,而無需編輯或更新其他洞中的數據。
底線是Firebase陣列是非常情況化的,通常可以避免。
希望有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.