Не удается загрузить данные из пожарного магазина в uitableview - PullRequest
0 голосов
/ 20 января 2020

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

Вот контроллер основного вида:

class MealplanViewController: UIViewController {

var db: Firestore!
var mealplanArray = [Mealplan]()

@IBOutlet weak var mealplanTableView: UITableView!

override func viewDidLoad() {
    super.viewDidLoad()

    mealplanTableView?.dataSource = self
    mealplanTableView?.delegate = self

    db = Firestore.firestore()
    loadData()
    // Do any additional setup after loading the view.
}

func loadData() {
    userEmail = getUserEmail()
    db.collection("Meal_Plans").getDocuments() {querySnapshot , error in
        if let error = error {
            print("\(error.localizedDescription)")
        } else {
            self.mealplanArray = querySnapshot!.documents.compactMap({Mealplan(dictionary: $0.data())})
            print(self.mealplanArray)
            DispatchQueue.main.async {
                self.mealplanTableView?.reloadData()
            }
        }
    }
}

func getUserEmail() -> String {
    let user = Auth.auth().currentUser
    if let user = user {
        return user.email!
    } else {
        return "error"
    }
}
}

// MARK: - Table view delegate

extension MealplanViewController: UITableViewDataSource, UITableViewDelegate {


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

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

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    //let cell = tableView.dequeueReusableCell(withIdentifier: "MealplanTableViewCell", for: indexPath)
    let mealplanRow = mealplanArray[indexPath.row]
    let cell = tableView.dequeueReusableCell(withIdentifier: "MealplanTableViewCell") as! MealplanTableViewCell

    cell.setMealplan(mealplan: mealplanRow)
    return cell
}
}

А вот ячейка, в которой я показываю одно из запрашиваемых значений:

class MealplanTableViewCell: UITableViewCell {

@IBOutlet weak var mealplanNameLabel: UILabel!


func setMealplan(mealplan: Mealplan) {
    // Link the elements with the data in here
    mealplanNameLabel.text = mealplan.mpName
    print(mealplan.mpName)
}

override func awakeFromNib() {
    super.awakeFromNib()
    // Initialization code
}

override func setSelected(_ selected: Bool, animated: Bool) {
    super.setSelected(selected, animated: animated)

    // Configure the view for the selected state
}

}

И наконец, вот модель данных:

import Foundation
import Firebase

protocol MealplanSerializable {
    init?(dictionary:[String:Any])
}

struct Mealplan {

    var mealplanId:String

    var mpName:String

    ]
}
}

extension Mealplan : MealplanSerializable {
    init?(dictionary: [String : Any]) {
        guard let 
        let mealplanId = dictionary["mealplanId"] as? String,

        let mpName = dictionary["mpName"] as? String,


    else { return nil }

    self.init(mealplanId: mealplanId, mpName: mpName)
}
}

Я получаю только пустое табличное представление без данных в нем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...