Я пытаюсь передать полученный 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)
})
}