Загрузить большие данные из firestore в таблицу Swift

madhatter989 спросил: 11 июня 2018 в 10:02 в: swift

firestore для хранения более 500 информации, и я хочу отобразить ее в виде таблицы. В принципе, я успешно показываю все данные в своей ячейке, но проблема в том, что для загрузки всех данных требуется более 1 минуты. Пока загруженные данные, я не могу прокрутить представление таблицы, если все данные не закончатся. Как включить прокрутку во время загрузки данных? Если это невозможно, как сначала загрузить первые 20 данных и продолжить загрузку, если пользователь находится в конце ячейки? Вот какой код, который я попытался передать из firestore:

    func getData () {
    db.collection("fund").getDocuments()
        {
            (querySnapshot, err) in            if let err = err
            {
                print("Error getting documents: \(err)");
            }
            else
            {
                for document in querySnapshot!.documents {
                    let data = document.data()
                    let agencyPath = data["agensi"] as? String ?? ""
                    let title = data["title"] as? String ?? ""
                    let program = data["program"] as? String ?? ""
                    let perniagaan = data["perniagaan"] as? String ?? ""
                    let newMax = data["max"] as? Int
                    let agencyId = document.documentID
                    let query = Firestore.firestore().collection("Agensi")
                    let newQuery = query.whereField("name", isEqualTo: "\(agencyPath)")                    newQuery.getDocuments()
                        {
                            (querySnapshot, err) in                            if let err = err {
                                print("Error getting documents: \(err)");
                            } else
                            {
                                for document in querySnapshot!.documents {
                                    let data = document.data()
                                    let logo = data["logo"] as? String ?? ""
                                    //store to Struct
                                    let newModel = DisplayModel(agency: title, agencyId: agencyId, programTag: program, perniagaanTag: perniagaan, max: newMax, agencyPath: agencyPath, logoUrl: logo, agencyTitle: agencyPath)
                                    self.agencyList.append(newModel)
                                }
                                self.tableView.reloadData()
                                self.dismiss(animated: false, completion: nil)
                            }
                    }
                }            }
    }
}

отображать данные в ячейке:

      func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cellData: DisplayModel    if searchController.searchBar.text != "" {
        cellData = filteredData[indexPath.row]    } else {
        cellData = agencyList[indexPath.row]    }    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as? HomeTableViewCell    cell?.agencyName.text = cellData.agency
    cell?.agencyImage.sd_setImage(with: URL(string: "\(cellData.logoUrl ?? "")"), placeholderImage: UIImage(named: "no_pic_image"))    return cell!}

Действие в последней строке ячейки:

    func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {    if searchController.searchBar.text != "" {
       let lastElement = filteredData.count - 1
        if indexPath.row == lastElement {
            //getData()
            // handle your logic here to get more items, add it to dataSource and reload tableview
        }
    } else {
        let lastElement = agencyList.count - 1
        if indexPath.row == lastElement {
            //getData()
            // handle your logic here to get more items, add it to dataSource and reload tableview
        }    } 
}

Я действительно не знаю, какой метод я должен сделать, чтобы загрузить 20 данных сначала и продолжить загрузку в конце строки ячейки, если нет решения, по крайней мере Я мог бы прокручивать представление таблицы во время сеанса загрузки. Спасибо, за вашу информацию, я просто научился быстро в прошлом месяце. Спасибо, что помогли мне.


0 ответов