1
我正在嘗試使用信號量來強制同步Firebase數據查詢,以便我可以檢查數據庫中已有的項目。同步使用Firebase observeSingleEventOfType
這是我試圖獲取一個快照,並檢查重複的代碼:
let sem = dispatch_semaphore_create(0)
self.firDB.child("sessions").observeSingleEventOfType(.Value, withBlock: { snapshot in
snap = snapshot
dispatch_semaphore_signal(sem)
})
// semaphore is never asserted
dispatch_semaphore_wait(sem, DISPATCH_TIME_FOREVER)
var isDuplicate : Bool
repeat {
sID = genCode()
isDuplicate = snap.hasChild(sID)
} while isDuplicate
在這種情況下,我需要等待一個快照到isDuplicate
循環前返回,但信號燈從來沒有發射從observeSingleEventOfType
塊。
任何建議非常感謝。
期待讓我知道如果u取得任何進展 – adolfosrs
感謝@adolfosrs,那絕對是比我試圖做一個清潔的解決方案,並現在我已經開始工作了,只需對代碼進行少量修改即可。我仍然不確定爲什麼我的信號量不起作用,但是我會去閱讀其他一些線索,試圖弄清楚我做錯了什麼。 – djruss70