簡體   English   中英

Firebase數據需要很長時間才能加載到TableView Swift 3中

[英]Firebase data taking ages to load in tableview swift 3

我有一個可從Firebase加載數據的表視圖,加載時似乎要花一些時間,大約需要10到15秒才能在該表視圖中顯示任何數據。 加載該數據時,該應用也被凍結。

我獲取數據的功能是:在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,這可能會大大降低速度。 我的數據不是很大,這是一個例子。

在此處輸入圖片說明

顯示1條完整記錄,總共131條記錄。

現在解決了這個問題,我計算出要加載的每組數據與當前位置之間的距離(以英里為單位)。 這大大降低了Tableview人口。

現在只需要弄清楚如何執行此計算,但是也許在數據加載之后

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM