Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.1k views
in Technique[技术] by (71.8m points)

ios - Why is the currentData in my Firebase transaction always nil?

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!!!

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
Waitting for answers

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

2.1m questions

2.1m answers

60 comments

57.0k users

...