我試圖讓我的程式檢查唯一的用戶名。我現在的問題是它會在完成之前回傳。我理解,因為這是異步的并且在后臺發生;但是,我曾嘗試使用 DispatchGroups 和信號量,但沒有使用它們。這是迅速的,任何幫助將不勝感激。我對 Firestore 還很陌生。
func checkUsernames(_ user: String) {
let docRef = db.collection("userRI").document(user)
docRef.getDocument { (document, error) in
if let document = document, document.exists {
self.uniqueUser = false
print("does exist")
} else {
self.uniqueUser = true
print("does not exist \(self.uniqueUser)")
}
}
}
uj5u.com熱心網友回復:
docRef.getDocument() 是異步的,并在查詢完成之前立即回傳。回呼將在一段時間后呼叫。這意味著您的函式將在uniqueUser有值之前回傳。
解決的想法是考慮一個轉義回呼來傳遞值。
func checkUsernames(_ user: String, completion: @escaping (_ uniqueUser: Bool) -> Void) {
let docRef = db.collection("userRI").document(user)
docRef.getDocument { (document, error) in
if let document = document, document.exists {
completion(false)
print("does exist")
} else {
completion(true)
print("does not exist \(self.uniqueUser)")
}
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/396577.html
標籤:迅速 火力基地 异步 谷歌云firestore
下一篇:堆疊視圖因約束而離開螢屏
