Я хочу разделить структуру (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
}
}