«Подготовить переход» выполнить «наблюдать» только после передачи данных в другой контроллер представления - PullRequest
0 голосов
/ 01 мая 2018

Я хочу разделить структуру (Utente) между двумя контроллерами, используя segue, поэтому я написал этот код. Проблема в том, что часть ref.observe выполняется только после того, как переменная ut передается в другое представление. Точнее, все инструкции выполняются в правильном порядке, в какой-то момент Xcode переходит к инструкциям let chatsingola = segue.destination as! ChatSingola; chatsingola.aaa = ut и передает данные другому контроллеру представления, а после этого повторяет все инструкции, также используя ref.observe. Почему это так работает? Как я могу решить эту проблему?

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if let indexPath = tableView.indexPathForSelectedRow{

        let selectedRow = indexPath.row
        let msg = Messaggi[selectedRow]
        let partnerID: String
        var ut = Utente()

        if msg.Mittente == Auth.auth().currentUser?.uid {
            partnerID = msg.Destinatario!
        }
        else {
            partnerID = msg.Mittente!
        }

        print("PARTNER:\n",partnerID)
        let ref = Database.database().reference().child("Utenti").child(partnerID)

        //Retrieve the user
        ref.observe(.value) { (snapshot) in
            //print(snapshot)

            if let Diz = snapshot.value as? [String: AnyObject] {

                let nome = Diz["Nome"] as? String
                let email = Diz["Email"] as? String
                let immProfilo = Diz["immProfilo"] as? String
                let UID = partnerID

                ut.nome = nome
                ut.email = email
                ut.immProfilo = immProfilo
                ut.ID = UID

                print("UT1:\n",ut)
            }
        }

        print("UT2:\n",ut)
        let chatsingola = segue.destination as! ChatSingola
        chatsingola.aaa = ut
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...