2016-05-26 13 views
0

私はfirebaseデータベースから取得されているスナップショットで変数の内容を変更しようとしています。Swift - Firebaseの変数へのスナップショット

私は変数を定義し、setValueメソッドを使用して、ローカルに格納されている変数の値をデータベースに保持されている値に変更しようとしています。しかし、エラーが出ないにもかかわらず、私の関数は実行されていません。私の変数が明らかに '0'であっても、何もデータベースに追加されません。

これは私のコードです:タイプ値の単一のイベントが非同期であるため、この場合は

var myVar = 1 as AnyObject 

    currentUserHasVotedVar.observeSingleEventOfType(.Value, withBlock: { snapshot in 
     myVar = snapshot.value 
     print(myVar) 
//should be set to '0' from db 
     }, withCancelBlock: { error in 
      print(error.description) 
    }) 

    if myVar as! NSObject == 0 { 
     print("Hasn't voted yet") 
     pollRef.childByAppendingPath("leave").childByAutoId() 
     myVar = 1 
     print(myVar) 
    } 

答えて

1

「myVarには」常に、1になります。その後、

var myVar = 1 as AnyObject 

..

if myVar as! NSObject == 0 { 
print("Hasn't voted yet") 
pollRef.childByAppendingPath("leave").childByAutoId() 
myVar = 1 
print(myVar) 
} 

(myVarには常に1であるため、このコードが実行されることはありません)、最後でそれはコールバックの内容を実行...:そう、実行の順序は、最初のものです「currentUserHasVotedVar」参照でfirebaseパスの値にアクセスするために

{ snapshot in 
    myVar = snapshot.value 
    print(myVar) 
}, withCancelBlock: { error in 
    print(error.description) 
} 

、あなたはコールバックの内側にあなたの検証コードを配置する必要があります。

関連する問題