Почему я не могу выполнить переход во время записи данных в мою базу данных Firebase? - PullRequest
0 голосов
/ 09 января 2019

Я пытаюсь выполнить переход от одного контроллера представления к другому, чтобы я мог передать данные. Я передаю текст из текстового поля на метку. Кроме того, я пытаюсь записать данные из этого текстового поля в мою базу данных Firebase. Это не позволит мне записывать данные в то же время, когда я выполняю сеанс. Почему это так и как я могу сделать оба одновременно?

Я создал шоу-шоу между двумя контроллерами представления с идентификатором "nextTransition". 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)
    }
}

Я ожидал, что он создаст отображение titleTextField.text в базе данных Firebase, но вместо этого он ничего не сделал.

Ответы [ 2 ]

0 голосов
/ 09 января 2019

Как я вижу, у вас есть ошибка в этой строке:

ref?.child("Title").childByAutoId().setValue("titleTextField.text")

Потому что

titleTextField.text

Не должно быть строкой. Я имею в виду, что это не обязательно должно быть в кавычках.

После этого, пожалуйста, проверьте, что

titleTextField.text != ""

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

А если линия работает, проверьте, правильно ли назван ваш segue.

0 голосов
/ 09 января 2019

Запись в firebase является асинхронной функцией. Когда вы переходите на новый VC, он закрывает соединение с firebase до того, как завершит запись. Перейдите к новому VC в обработчике завершения метода setValue.

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