Using Firebase observeSingleEventOfType synchronously
<p>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.  </p>

<p>This is the code I have tried to retrieve a snapshot and check for duplicate:</p>

<pre><code>    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
</code></pre>

<p>In this case I need to wait for a snapshot to return before the <code>isDuplicate</code> loop, but the semaphore is never fired from the <code>observeSingleEventOfType</code> block.</p>

<p>Any suggestions greatly appreciated.</p>