我是Stack Overflow的新手,所以请保持柔和!
我正在设计一个应用,该应用可从firebase中检索对象并将其显示在fire base中。
我在此处配置Firebase:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
FIRApp.configure()
FIRDatabase.database().persistenceEnabled = true
// Override point for customization after application launch.
return true
}
但是,我发现在运行该应用程序时,我只得到了一个空白的白色屏幕。经过一些调试后,我意识到这是因为未达到TableView(cellForRowAt indexPath:IndexPath)代码块:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "ItemCell", for: indexPath)
let BUCSItem = items[indexPath.row]
cell.textLabel?.text = BUCSItem.name
print("should show bucs")
return cell
}
我还有另一个必需的tableView方法:
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return items.count
}
这是我的viewDidLoad:
override func viewDidLoad() {
super.viewDidLoad()
let ref = FIRDatabase.database().reference(withPath: "BUCS-items")
tableView.allowsMultipleSelectionDuringEditing = false
ref.queryOrdered(byChild: "BUCSgoals").observe(.value, with: { snapshot in
var newItems: [BUCSItem] = []
for child in snapshot.children {
if let snapshot = child as? FIRDataSnapshot,
let BUCSItem = BUCSItem(snapshot: snapshot) {
newItems.append(BUCSItem)
}
}
self.items = newItems
self.tableView.reloadData()
})
}
但是这很奇怪。当我断开与Internet的连接时,它可以很好地工作,并且项目按预期显示在表中。只有当连接到互联网时,它们才会显示。
这是断开连接时的样子: 连接时相同,但名称未出现在表中。
任何帮助将不胜感激!
答案 0 :(得分:0)
我认为这是一个快速更新转换
ref.queryOrdered(byChild: "BUCSgoals").observe(.value
到
ref.queryOrdered(byChild: "BUCSgoals").observeSingleEvent(.value