【发布时间】:2020-08-18 16:27:18
【问题描述】:
我正在编写 Swift 编码,但我的代码中有问题。
在下面的代码中,我试图先获取表格视图单元格的信息,然后执行 segue。我也在使用 Firestore 来保存数据。问题是当我使用打印时,我可以先看到segue triggered!!!,然后再看到document saved!!。因为我想将doc.documentID的值传递给下一个视图控制器,所以我想在触发执行segue之前保存documentID.....
class HomeViewController: UIViewController {
var gameDocumentID = ""
// more codes here...
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == K.homeToGameScreen {
let gameScreenVC = segue.destination as! GameScreenViewController
gameScreenVC.gameDocumentID = gameDocumentID
}
}
}
extension HomeViewController: UITableViewDelegate {
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
// serch game db where player1 is ready to play
db.collection(K.FStore.newGameCpllection).whereField(K.FStore.uID, isEqualTo: players[indexPath.row].uID).addSnapshotListener { (querySnapshot, err) in
if let err = err {
print("Error getting game db: \(err)")
} else {
for doc in querySnapshot!.documents {
print("document saved!!")
self.gameDocumentID = doc.documentID
self.db.collection(K.FStore.newGameCpllection).document(self.gameDocumentID).updateData([
K.FStore.player2Field: self.playerInfo[K.FStore.nameField]!
]) { err in
if let err = err {
print("Error updating document: \(err)")
} else {
print("Document successfully updated")
}
print("segue triggered!!!")
self.performSegue(withIdentifier: K.homeToGameScreen, sender: self)
}
}
}
}
}
}
【问题讨论】:
标签: swift google-cloud-firestore syntax segue