如何通过segue firebase发送数据?

时间:2019-04-29 18:47:28

标签: swift xcode firebase firebase-realtime-database firebase-storage

我有一个函数,该函数从firebase数据库接收所有数据,并且数据显示在表视图中,当我单击表视图单元格时,它将通过segue打开一个新窗口,其中包含更多详细信息。我该如何通过Firebase从我的Firebase发送数据?

func getAllFIRData(){
        var ref: DatabaseReference
        ref = Database.database().reference().child("Receitas")

        ref.observe(.value) { (snapshot) in
            self.receitaList.removeAll()
            if let snapShot = snapshot.children.allObjects as? [DataSnapshot]{
                for snap in snapShot{
                    if let mainDict = snap.value as? [String: AnyObject]{
                       -----------> let nomeReceita = mainDict["nomeReceita"] as? String
                       -----------> let tempoReceita = mainDict["tempoPreparo"] as? String
                       -----------> let porcaoReceita = mainDict["porcaoReceita"] as? String
                       -----------> let ingredientesReceita = mainDict["ingredientesReceita"] as? String
                       -----------> let imageURL = mainDict["imageURL"] as? String

                        self.receitaList.append(ReceitaModel(nome: nomeReceita, tempo: tempoReceita, porcao: porcaoReceita, ingredientes: ingredientesReceita, imageURL: imageURL))
                        self.vrTableViewReceita.reloadData()
                    }
                }
            }
        }
    }



    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "proxTela" {
            let svc = segue.destination as! DetailViewController

            let indexPath:IndexPath! = vrTableViewReceita.indexPathForSelectedRow

            svc.vrNomeReceita = nomeReceita <--------
            svc.vrTempoReceita = tempoReceita <--------
            svc.vrPorcaoReceita = porcaoReceita <--------
            svc.vrIngredientesReceita = ingredientesReceita <--------
            svc.vrImageView = imageURL <--------

        }
    }

1 个答案:

答案 0 :(得分:0)

修复:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "proxTela" {
            let svc = segue.destination as! DetailViewController

            if let indexPath = self.vrTableViewReceita.indexPathForSelectedRow{
                let segueData : ReceitaModel
                segueData = receitaList[indexPath.row]

                svc.nome = segueData.nome!
                svc.tempo = segueData.tempo!
                svc.porcao = segueData.porcao!
                svc.ingredientes = segueData.ingredientes!
                svc.imagem = segueData.imageURL

            }

        }
    }


    override func viewDidLoad() {
        super.viewDidLoad()

        var ref: DatabaseReference
        ref = Database.database().reference().child("Receitas")

        ref.observe(.value) { (snapshot) in
            self.receitaList.removeAll()
            if let snapShot = snapshot.children.allObjects as? [DataSnapshot]{
                for snap in snapShot{
                    if let mainDict = snap.value as? [String: AnyObject]{
                        let nomeReceita = mainDict["nomeReceita"] as? String
                        let tempoReceita = mainDict["tempoPreparo"] as? String
                        let porcaoReceita = mainDict["porcaoReceita"] as? String
                        let ingredientesReceita = mainDict["ingredientesReceita"] as? String
                        let imageURL = mainDict["imageURL"] as? String

                        self.receitaList.append(ReceitaModel(nome: nomeReceita, tempo: tempoReceita, porcao: porcaoReceita, ingredientes: ingredientesReceita, imageURL: imageURL))
                        self.vrTableViewReceita.reloadData()
                    }
                }
            }
        }