我有一个比较大的数据集(大约1,000行),需要从Firebase填充到UITableView中。我也在UITableView中使用了部分和搜索功能。
这就是它具有所需功能的时刻:
如您所见,UITableView中使用了部分功能。但我目前面临的the issue
数据是extremely slow loading
。我有localPersistenceEnabled
但是填充所有数据仍然需要大约3-4秒,而且体验不太愉快。
我该如何解决这个问题?我读到了分页,但我也希望保留部分的功能。对于部分,这是我正在使用的代码:
override func viewWillAppear(_ animated: Bool) {
self.racks.removeAll()
self.sectionals.removeAll()
self.tableView.reloadData()
ref.queryOrdered(byChild: "chamber").observe(.childAdded, with: { (snapshot) -> Void in
// Manage TableView Sections & Rows for Rack Additions
var doesSectionExist = false
let segment = (snapshot.value as! [String : AnyObject])["segment"] as! String
if self.sectionals.contains(segment){
// There's already an index present for this letter.
doesSectionExist = true
var snapshotData = self.racks[segment]
snapshotData?.append(snapshot)
self.racks[segment] = snapshotData
}
else{
self.racks[segment] = [snapshot]
self.sectionals.append(segment)
}
self.allRacks.append(snapshot)
self.sectionals = self.sectionals.sorted()
if !doesSectionExist{
self.tableView.insertSections(IndexSet(integer: self.sectionals.index(of: segment)!), with: .fade)
}
else{
//let rowCount = self.customers[firstChar]?.count
self.tableView.reloadSections(IndexSet(integer: self.sectionals.index(of: segment)!), with: .fade)
//self.tableView.insertRowsAtIndexPaths([NSIndexPath(forRow: rowCount!-1, inSection: self.sectionals.indexOf(firstChar)!)], withRowAnimation: .Fade)
}
})
}
override func numberOfSections(in tableView: UITableView) -> Int {
if searchController.isActive && searchController.searchBar.text != "" {
return 1
}
else{
return sectionals.count
}
}
override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
if searchController.isActive && searchController.searchBar.text != "" {
return "Top Matches"
}
else{
return sectionals[section]
}
}
override func sectionIndexTitles(for tableView: UITableView) -> [String]? {
if searchController.isActive && searchController.searchBar.text != "" {
return nil
}
else{
return sectionals
}
}
因此,我们的想法是提供部分索引标题以便快速访问,并缩短加载这么大数据集的加载时间。
谢谢。