我希望我能得到一些帮助来优化我的代码。我是开发新手,所以请善待。
目前它可以工作,但它需要相当长的时间(10-15 秒)来加载我在应用程序中需要的第一个表视图。首先,我以为我没有正确激活"持久性",但我开始怀疑这是我加载数据的方式是次优的。
我使用的"大"(12k + 项目)数据集不会经常更改,因此理想的解决方案是加载一次,然后侦听更改。我以为这就是我正在做的事情,但如果是这样,我不明白为什么这么慢?所以我现在怀疑这是我每次附加数据的方式,而不仅仅是从"本地某处"读取/加载",然后侦听服务器的变化?
任何帮助不胜感激
//read From Firebase adjusted to whiskies
func startObservingDB () {
dbRef.queryOrdered(byChild: "brand_name").observe(.value, with: { (snapshot:FIRDataSnapshot) in
var newWhisky = [WhiskyItem]()
//forloop to iterate through the snapshot
for whiskyItem in snapshot.children {
let whiskyObject = WhiskyItem(snapshot: whiskyItem as! FIRDataSnapshot)
newWhisky.append(whiskyObject)
}
//update
self.whiskies = newWhisky
print("WhiskyItem")
self.tableView.reloadData()
}) { (error: Error) in
print(error.localizedDescription)
}
}
Firebase 结构:/结果/索引/名称:xxx,"other thing1":xxxx,...,"other thing32":xxxx
我不确定,将所有12 000个项目存储在手机上是个好主意。
也许这对您来说是一个很好的解决方案:
您可以将此库用于:
(示例)
1) 加载 100 行的数据
2) 滚动到末尾
3) 再加载 100 行。
希望对你有帮助