This is how the DB presented over Firebase
Parent
      Match
           User 1
                 Opponent : User 2
                 State    : "NotReady"
           User 2 
                 Opponent : User 1
                 State    : "NotReady"
I'm trying to update the values of State (each user individually) with RunTransaction. 
What I was trying to do :
- Check that the item haven't removed(is not nil/null)
 - If he is exist - update the value
 - if he doesnt exists - manipulate UI
 if he suddenly deleted - abort the transaction (Possible condition - if two close event running at the same time, one updating "State" and other deletes the all key(
removeValue)let path = "Parent/Match/User 1/state" let futureRef = Firebase(url: path) futureRef.runTransactionBlock({ (currentData:FMutableData!) in let value = currentData.value as? String if value != nil { currentData.value = "Ready" return FTransactionResult.successWithValue(currentData) } return FTransactionResult.abort() }, andCompletionBlock: { // Completion Check (error:NSError!, success:Bool, data:FDataSnapshot!) in if error == nil && success && data.value as! String == "Ready" { //Value is not null(not removed) and he is ready ManipulateUI() } else { //Value deleted } } )
But for some reason - I'm getting  currentData  that is nil and going straight to the Abort. Any suggestions? Thanks!!!