У меня возникли трудности с тем, чтобы включить firebase в контроллер. Firebase работает правильно из-за того, что я могу распечатать на консоли. Мне нужно иметь возможность отображать все данные в моем приложении. Пожалуйста помогите! // // All.swift // Гарантированный Ценообразование //Как отобразить информацию о firebase в моем iOS swift listview?
import Foundation
import UIKit
import Firebase
class All: UINavigationController, UITableViewDataSource, UITableViewDelegate {
var items: [String] = []
var tableView: UITableView!
let cellIdentifier = "CellIdentifier"
override func viewDidLoad(){
super.viewDidLoad()
self.tableView = UITableView(frame:self.view!.frame)
self.tableView!.delegate = self
self.tableView!.dataSource = self
self.tableView!.registerClass(UITableViewCell.self, forCellReuseIdentifier: cellIdentifier)
self.view?.addSubview(self.tableView)
let ref = Firebase(url:"https://sizzling-inferno-451.firebaseio.com/services")
ref.observeSingleEventOfType(.Value, withBlock: { snapshot in
for child in snapshot.children {
// let key = child.key //returns -Jikaijsipaij and -kalksdokoas
// let name = child.value.objectForKey("service_name") as NSString?
////
// self.items.append(key)
}
// do some stuff once
print(snapshot.value)
// get these values and put them in the cell's text view. key is more important
print(snapshot.key)
// add to the array and just this array
self.tableView!.reloadData()
})
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return items.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath)
// Fetch Fruit
let fruit = items[indexPath.row]
// Configure Cell
cell.textLabel?.text = fruit
return cell
}
// onclick printing
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
print(items[indexPath.row])
}
}
Ну, для начала вы не Наполнение массива пунктов (который является источником данных tableView) с любыми данными. Вы хотели бы сделать это в блоке ref.observe. Похоже, ваш код закомментирован, что вы должны использовать, по крайней мере, если вы просто хотите отобразить список ключей. О, и ваша структура Firebase не включает в себя какие-либо ключи, называемые service_name, поэтому вы должны использовать имя ключа, которое существует, например, часы или тип – Jay
Ну код, который я прокомментировал, я пытался смоделировать структуру firebase. Я в конечном итоге пытался его реализовать, но вместо service_name я использовал описание. По какой-то причине я продолжаю получать сообщение об ошибке «значение необязательного типа« AnyObject ?! » не разворачивается, вы хотели использовать «!»? или '?' «. Кроме того, есть ли у вас какие-либо предложения о том, как я могу заполнить массив? Или любая идея, из чего эти ошибки? Firebase работает правильно, и я правильно настроил контроллеры ... Я некоторое время занимался этой ошибкой, и я не уверен, как ее решить. –
Возможно, вам стоит ознакомиться с опциями (?), Поскольку они являются неотъемлемой частью Swift - учебник Apple по переменным и опциям довольно хорош. Я добавил ответ, который должен оказать некоторую помощь. – Jay