Как получить массив данных из Firebase в приложение для iOS - PullRequest
0 голосов
/ 08 июня 2018

Я пытаюсь получить это из моей базы данных Firebase:

Firebase DB

И это мой VC, где я получаю данные из базы данных:

//
//  VestibularesViewController_Design.swift
//  newProject
//
//  Created by Lucas Nascimento on 31/05/18.
//  Copyright © 2018 Lucas Frazao. All rights reserved.
//

import UIKit
import Firebase

class VestibularesViewController_Design: UIViewController, UITableViewDataSource, UITableViewDelegate {

    @IBOutlet weak var topView: UIView!

    @IBOutlet weak var tableView: UITableView!

    @IBOutlet var backgroundView: UIView!

    @IBOutlet weak var nomeVestibular: UILabel!

    var ref: DatabaseReference!
    var databaseHandle: DatabaseHandle?


    var datas = [Datas]()

    var newItems: [Datas] = []

    var meses = ["Maio","Junho","Agosto", "Agosto"]

    var ano = ["2018", ""]

    var dias = ["18","20", "30", "31"]

    var eventos = ["Inicio das inscrições", "Fim das inscricoes", "1ª Prova", "2ª Prova"]


    override func viewDidLoad() {
        super.viewDidLoad()

        nomeVestibular.text = "ENEM"

        self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: UIBarMetrics.default)
        self.navigationController?.navigationBar.shadowImage = UIImage()
        self.navigationController?.navigationBar.isTranslucent = true

        loadPosts()
    }

    func numberOfSections(in tableView: UITableView) -> Int {
        return datas.count
    }

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


    func loadPosts() {

        Database.database().reference().child("Datas").observe(.childAdded, with: { (snapshot) in

            DispatchQueue.main.async {
                self.tableView.reloadData();
            }

            if let dict = snapshot.value as? [String: [Any]] {

                let diaText = dict["dia"] as? String
                let mesText = dict["mes"] as? String
                let eventoText = dict["evento"] as? String
               // let dateText = dict["date"] as? String
                let data = Datas(diaText: diaText, mesText: mesText, eventoText: eventoText)
                self.newItems.append(data)
                print(self.newItems)

            }
        })
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {


        let cell = tableView.dequeueReusableCell(withIdentifier:"cell", for: indexPath) as! VestibularesTableViewCell

        //cell.titleNews.text = "O Edital do ENEM foi anunciado!"

        ref = Database.database().reference()

        cell.dia.text = datas[0].dia

        cell.evento.text = datas[indexPath.row].evento

        cell.mes.text = datas[indexPath.row].mes

        if backgroundView.backgroundColor == UIColor.white {

            cell.mes?.textColor = UIColor.black

            cell.dia?.textColor = UIColor.black

            cell.evento?.textColor = UIColor.black
        }
        return cell
    }



    override func viewWillDisappear(_ animated: Bool) {

        //self.navigationController?.setNavigationBarHidden(false, animated: true)
    }


    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}

Если я пытаюсь загрузить одно значение для каждой строки, оно работает нормально, но я не могу получить его для извлечения массива.

И вот где я создал класс "Datas":

class Datas {

    var dia: String?
    var mes: String?
    var evento: String?

    init(diaText: String?, mesText: String?, eventoText: String?) {

        dia = diaText
        mes = mesText
        evento = eventoText

    }

}

Я думаю, что что-то, относящееся к классу Datas, должно быть изменено для правильной работы.

1 Ответ

0 голосов
/ 08 июня 2018

Вы пытаетесь прочитать массив в строку здесь:

let eventoText = dict["evento"] as? String

И это не сработает.Я не эксперт по Swift, но, скорее всего, это должно быть:

let eventoText = dict["evento"] as? [String]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...