【发布时间】:2017-08-20 15:51:32
【问题描述】:
我是 swift 编程新手。我正在尝试制作一个从 firebase 数据库下载学生数据的应用程序。我无法让应用程序运行。这是我的 JSON 文件:
{"classA":[
{
"name": "Student1",
"USN": "1DS16CS095"
},
{
"name": "student2",
"USN": "1DS16CS065"
},
{
"name":"student3",
"USN":"1DS16CS047"
}
]
}
这是我下载上述 JSON 文件并将其放入 tableView 的代码。 Modelstudent 是我的班级,我在其中存储了变量名称和 USN。 MarksstudentlistTableViewCell 是我用来操作原型单元格标签的类。
import UIKit
import Firebase
import FirebaseDatabase
struct StudentData {
let StudentName : String
let StudentUSN : String
}
class marksstudentlist: UIViewController, UITableViewDelegate, UITableViewDataSource{
var FetchedStudentIDs = [StudentData]()
@IBOutlet weak var tableView: UITableView!
var ref: DatabaseReference!
var _selectedsub: Int!
var selectedsub: Int {
get {
return _selectedsub
}set {
_selectedsub = newValue
}
}
override func viewDidLoad() {
tableView.delegate = self
tableView.dataSource = self
if(classselected==0){
ref = Database.database().reference().child("classA")
ref.observe(DataEventType.value, with: { (snapshot) in
if snapshot.childrenCount>0{
for students in snapshot.children.allObjects as! [DataSnapshot]{
let studentObject = students.value as? [String: String]
let studentname = studentObject?["name"]
let studentUSN = studentObject?["USN"]
let student = Modelstudent(name: studentname , USN: studentUSN)
self.FetchedStudentIDs.insert(StudentData(StudentName :(studentname as? String!)! , StudentUSN : (studentUSN as? String!)! ) , at: 0)
}
self.tableView.reloadData()
}
})
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return FetchedStudentIDs.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "marksstudentlistcell", for: indexPath) as! marksstudentlistTableViewCell
cell.namelbl.text = FetchedStudentIDs[indexPath.row].StudentName// Student name comes from Firebase
cell.USNlbl.text = FetchedStudentIDs[indexPath.row].StudentUSN
return cell
}
@IBAction func backbtn(_ sender: Any) {
dismiss(animated: true, completion: nil)
}
}
【问题讨论】:
-
我很抱歉。我已经编辑了代码并删除了所有答案。不幸的是,我仍然无法将数据从 firebase 下载到我的应用程序。你能帮帮我吗?
-
好的,我正在尝试将数据库从我的 firebase 下载到我的应用程序中,并在 tableView 单元格中显示信息。但由于某种原因,它没有下载任何数据,并且 tableview 单元格是空的。我也在使用 firebase 进行身份验证,效果很好。所以问题在于下载数据。我用于我的应用程序的 JSON 包含在问题中。
-
嘿,马特,我不认为数据正在下载。我试图在控制台中打印下载的数据,但我什么也没看到。它是否与我的代码无法正常工作有关?这是我第一次使用 firebase,而且我对 swift 比较陌生。所以我很抱歉问了太多问题。
标签: ios swift firebase firebase-realtime-database