не может передать autoID новому VC - PullRequest
0 голосов
/ 09 апреля 2020

Я пытаюсь передать полученный autoID другому ViewController ... Я получаю идентификатор следующим образом:

var passID: String = ""

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    jobsRef.queryOrdered(byChild: "userID").queryEqual(toValue: userID).observe(.childAdded, with: {snapshot in
        let currentPostID = snapshot.key
        self.passID = currentPostID
        print(self.passID) //-> Here the ID gets printed correctly
    })
    performSegue(withIdentifier: "toJobDetail", sender: indexPath)
}

Сам мой Segue выглядит так:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "toJobDetail" {
        if let indexPath = sender as? IndexPath, let nextVC = segue.destination as? MyProfileJobDetailViewController {
            nextVC.jobDetails = MyProfileJobDetailViewController.JobDetails(IDPassed: self.passID)
   }}}

и я пытаюсь напечатать идентификатор в новом V C следующим образом:

var jobDetails: JobDetails?
struct JobDetails {
    var IDPassed: String
}

override func viewDidLoad() {
    super.viewDidLoad()
    print(jobDetails?.IDPassed) -> ID won't get printed correctly 
 }

Но мой вывод только сейчас:

Необязательно (())

Что-то не так с передачей удостоверения личности? Поскольку печать идентификатора при выборе ячейки работает ....

РЕДАКТИРОВАТЬ:

Теперь я получаю идентификатор, поскольку я просто вызываю executeSegue внутри запроса Firebase:

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    jobsRef.queryOrdered(byChild: "userID").queryEqual(toValue: userID).observe(.childAdded, with: {snapshot in
        let currentPostID = snapshot.key
        self.passID = currentPostID
        print(self.passID)
        self.performSegue(withIdentifier: "toJobDetail", sender: indexPath)
    })
}

1 Ответ

0 голосов
/ 09 апреля 2020

Ваш запрос asyn c и занимает некоторое время, прежде чем перейти к следующему экрану, убедитесь, что у вас есть необходимое значение. попробуй это ..

jobsRef.queryOrdered(byChild: "userID").queryEqual(toValue: userID).observe(.childAdded, with: {snapshot in
    let currentPostID = snapshot.key
    self.passID = currentPostID
    print(self.passID) //-> Here the ID gets printed correctly
    performSegue(withIdentifier: "toJobDetail", sender: indexPath)
})

РЕДАКТИРОВАТЬ:

попробуй что-нибудь ...

var jobDetails: JobDetails? {
   didSet {
      print("set jobDetails to \(jobDetails)"
   }
}

override func viewDidLoad() {
    super.viewDidLoad()
    print("viewDidLoad: \(jobDetails?.IDPassed)")
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...