Я пытаюсь получить данные из Firebase, но приложение падает, когда я добавил метод setValueForKeys.
До этого я пробовал другие способы извлечения данных, но не могу получить доступ к данным, которые хранятся в childByAutoId
databaseImage
Мне нужен доступ к началуи конечные значения, которые хранятся в разделе «Работа»
. Таким образом сохраняются данные:
func post () {
let dateFormatter = DateFormatter()
dateFormatter.timeStyle = .none
dateFormatter.dateStyle = .medium
let todaysDate = dateFormatter.string(from: date)
let post: [String : String] = ["start" : startTimeField.text!, "end" : endTimeField.text!]
let databaseRef = Database.database().reference()
databaseRef.child("Posts").child("\(todaysDate)").child(categoryField.text!).childByAutoId().setValue(post)
}
Для извлечения данных я создал класс объектов
import UIKit
class Category: NSObject {
var start : String?
var end: String?
}
Это ссылка на контроллер табличного представления
var postData = [Category]()
А метод извлечения ниже
func fetchData () {
Database.database().reference().child("Posts").child("Apr 18, 2019").child("Work").observeSingleEvent(of: .childAdded, with: { (snapshot) in
if let dictionary = snapshot.value as? [String: String] {
let category = Category()
category.setValuesForKeys(dictionary)
category.start = dictionary["start"]
category.end = dictionary["end"]
self.postData.append(category)
self.tableView.reloadData()
}
}, withCancel: nil)
}
Также код для табличного представления ниже
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return postData.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = UITableViewCell(style: .subtitle, reuseIdentifier: postCell)
let category = postData[indexPath.row]
cell.textLabel?.text = category.start
return cell
}