I am trying to use a semaphore to force synchronisation of a Firebase data query so that I can check for an existing item already in the database.
This is the code
You might be intersted in using a completion handler.
func findUniqueId(completion:(uniqueId:String)->()) {
self.firDB.child("sessions").observeSingleEventOfType(.Value, withBlock: { snapshot in
var sID = self.genCode()
while snapshot.hasChild(sID) {
sID = self.genCode()
}
completion(uniqueId:sID)
})
}
Then you will achieve what you are expecting with
findUniqueId(){ (uniqueId:String) in
// this will only be called when findUniqueId trigger completion(sID)...
print(uniqueId)
// proceed with you logic...
}