首页 > 解决方案 > 为什么在将数据写入 Firebase 数据库时无法执行 segue?

问题描述

我正在尝试从一个视图控制器到另一个视图控制器执行 segue,以便我可以传递数据。我正在将文本从文本字段传递到标签。另外,我正在尝试将该文本字段中的数据写入我的 Firebase 数据库。它不允许我在执行 segue 的同时写入数据。为什么会这样,我怎么能同时做这两个?

我在标识符为“nextTransition”的两个视图控制器之间创建了一个 show segue。当我在添加数据库代码之前按下按钮时,segue 工作。一旦我添加了代码以写入我的数据库,我就会遇到无法写入它的问题。它尝试使用 func 执行 segue,但它没有改变任何东西。

@IBAction func nextButton(_ sender: Any) {
ref?.child("Title").childByAutoId().setValue("titleTextField.text")

performNextTransitionSegue()

下面是我为节目“nextTransition”创建的函数。

func performNextTransitionSegue() {
    if titleTextField.text != "" {
        performSegue(withIdentifier: "nextTransition", sender: self)
    }
}

我希望它在 Firebase 数据库中创建显示 titleTextField.text ,但它没有做任何事情。

标签: swiftfirebasefirebase-realtime-databasesegue

解决方案


写入 firebase 是一个异步函数。当您选择新的 VC 时,它会在完成写入之前关闭与 firebase 的连接。在 setValue 方法的完成处理程序中转到您的新 VC。

ref?.child("Title").childByAutoId().setValue(`YourValue`) { (error, ref) in
        if error == nil {
            self.performNextTransitionSegue()
        } else {
            print("error")
        }
    }

推荐阅读