Ячейки анализа таблицы просмотра пустые

import UIKit
import Parse

class AmbianceTableViewTableViewController: UITableViewController,                UISearchBarDelegate, UISearchDisplayDelegate{
    //variables
    var name = [String]()
    var carBrand = [String]()
    var carEngine = [String]()

    //Properties
    @IBOutlet var searchBar: UISearchBar!

    override func viewDidLoad() {
        super.viewDidLoad()

        //Query data for Table
        tableView.delegate = self
        tableView.dataSource = self

        let query = PFQuery(className: "Make")
        query.findObjectsInBackground(block: { (objects, error) in
            if error != nil {
                print(error)
            }else{
                if let make = objects {
                    for objects in make {
                        if let make = objects as? PFObject {
                            let name = make["name"] as! String

                            print(make["name"])
                        }
                    }
                }
            }
        })

        self.tableView.reloadData()
    }

    // self.clearsSelectionOnViewWillAppear = false
    // self.navigationItem.rightBarButtonItem = self.editButtonItem()

    // MARK: - Table view data source

    override func numberOfSections(in tableView: UITableView) -> Int {
        return 1
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return name.count
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCell(withIdentifier: "Ambiance", for: indexPath) as! ViewControllerTableViewCell

        cell.venueNameLabel.text = name[indexPath.row]

        return cell
    }
}

1 ответ

Вы никогда ничего не добавляете в свой массив имен, поэтому ваш tableView никогда не будет показывать никаких данных. Кроме того, когда запрос завершен, вам нужно вызвать reloadData. Вы в настоящее время звоните после асинхронного вызова, который будет означать, что вы перезагружаете свою таблицу до того, как данные будут возвращены.

Измените свой запрос на это,

    let query = PFQuery(className: "Make")
    query.findObjectsInBackground(block: { [weak self] (objects, error) in

        if error != nil {
            print(error)
        }else{
            if let allCarMakes = objects {
                for carMake in allCarMakes {
                    if let make = carMake["name"] as? String {
                        self?.name.append(make)
                    }
                }
            }

        }
        DispatchQueue.main.async {
            self?.tableView.reloadData()
        }
    })
Другие вопросы по тегам