Firebase数据需要花费很长时间才能在tableview swift 3中加载

时间:2017-03-30 11:38:06

标签: ios swift xcode firebase

我有一个从Firebase加载数据的tableview,在加载它似乎需要很长时间,大约10-15秒才能在tableview中显示任何数据。在加载此数据时,它似乎也会冻结应用程序。

我获取数据的函数是:这在viewDidLoad中调用

  func getTrackData() {
    let result = FIRDatabase.database().reference(withPath: "tracks")
    result.observe(.value, with: { snapshot in
        var newItems: [newTracks] = []
        for item in snapshot.children {
            let trackDetails = newTracks(snapshot: item as! FIRDataSnapshot)
            newItems.append(trackDetails)
        }
        self.items = newItems
        self.items.sort(by: {$0.distance < $1.distance})
        self.tableView.reloadData()
    })

}

我的tableview如下:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    if let cell = tableView.dequeueReusableCell(withIdentifier: "TrackCell", for: indexPath) as? TrackCell {

        let tr: newTracks!
        if inSearchMode {
            tr = filteredTrack[indexPath.row]
            cell.configureCell(track: tr)
        } else {
            tr = items[indexPath.row]
            cell.configureCell(track: tr)
        }
        cell.configureCell(track: tr)

        cell.completion = {
            let coordinate = CLLocationCoordinate2DMake(tr.lat,tr.lon)
            let mapItem = MKMapItem(placemark: MKPlacemark(coordinate: coordinate,addressDictionary:nil))
            mapItem.name = tr.name
            mapItem.openInMaps(launchOptions: [MKLaunchOptionsDirectionsModeKey :MKLaunchOptionsDirectionsModeDriving])
            return()
        }

        cell.completion1 = {
            let url = URL(string: tr.link)!
            if #available(iOS 10.0, *) {
                UIApplication.shared.open(url, options: [:], completionHandler: nil)
            } else {
                UIApplication.shared.open(url)
            }
            return()
        }
        return cell
    } else {
        return UITableViewCell()
    }
}

我的问题是,这段代码写得不错,还是有更好的方法。我担心我的功能是获取每个项目然后重新加载tableview,这可能会大大减慢速度。我的数据不是很大,这是一个例子。

enter image description here

显示1条完整记录,总共有131条记录。

1 个答案:

答案 0 :(得分:0)

现在解决这个问题,我计算了当前位置的距离,以及正在加载的每组数据。这大大减缓了tableview的数量。

现在只需要计算如何进行此计算,但可能在数据加载后