簡體   English   中英

我如何在自己的完成處理程序中使用變量

[英]how do I use a variable in its own completion handler

我目前正在嘗試將 firebase 集成到我的 ios 應用程序中。 我正在開發的功能之一涉及在注冊時為每個用戶在 cloud firestore 中建立數據。 當他們在我的應用程序中單擊“注冊”時,它會使用 firebase 授權創建一個新用戶,然后我在“用戶”集合中的數據庫中創建一個用戶文檔。 但我還想在創建將存儲他們的“朋友”的用戶時為每個用戶添加一個子集合。 這是按下注冊按鈕時創建用戶文檔的代碼。 我利用函數返回能力來獲取對我剛剛創建的文檔的引用。 然后我想在創建文檔后使用該引用來創建子集合,即在調用完成處理程序時。 但是“usersDocRef”直到完成處理程序被明顯調用后才被賦予值。 所以我不能在那里做。 如何在完成處理程序中訪問對文檔的引用,或者在文檔創建完成后使用該引用添加子集合? 我試圖避免查詢以檢索引用或任何更多讀取操作以提高效率(因為這與 firebase 土地中的計費成本呈線性關系)。 任何幫助,將不勝感激

let userDocRef = self.db.collection(K.FStore.Collections.usersRootCollection).addDocument(data: [K.FStore.Fields.username : email]) { (error) in
                        if let error = error {
                            print("Error registering: \(error)")
                        } else {
                            ///want to use userDocRef here (obviously can't, workarounds?)
                        }
                    }

在上一行userDocRef聲明為 Optional:

var userDocRef: DocumentReference? = nil
userDocRef = self.db.collection(K.FStore.Collections.usersRootCollection).addDocument...

現在 Swift 編譯器將允許您從完成處理程序內部引用userDocRef

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM