2017-02-10 94 views
0

我使用火力地堡和斯威夫特3,我想知道我可以從我的Android應用程序翻譯這給雨燕3:這將是等效的命令addValueEventListener斯威夫特卡倫特3

DatabaseReference signalReceivedReference = mFirebaseDatabase.getReference("users/" + mAuth.getCurrentUser().getUid() + "/signal_received"); 
     signalReceivedReference.addValueEventListener(new ValueEventListener() { 
      @Override 
      public void onDataChange(DataSnapshot dataSnapshot) { 
       if(String.valueOf(dataSnapshot.getValue()).equals("true")){ 
        showToast(getString(R.string.signalReceived)); 
        dataSnapshot.getRef().setValue("false"); 
       } 
      } 

      @Override 
      public void onCancelled(DatabaseError databaseError) { 

      } 
     }); 

我試過,但這我以前不工作:

ref.child("users").child(userID!).child("signal_received").observeSingleEvent(of: .value, with: { (snapshot) in 
      if(snapshot.value as! String == "true"){ 
       self.view.makeToast("Signal received") 
       snapshot.ref.setValue("true") 
      } 
     }) { (error) in 
     } 
+0

什麼沒有工作的代碼? –

回答

0

您使用addValueEventListener監聽到的變化,而在斯威夫特你使用observeSingleEvent(of: .value, with: ...),這只是觀察值一次。您可以使用observe(.value, with: ...)來收聽更改。

ref.child("users/\(userID!)/signal_received").observe(.value, with: { (snapshot) in 
    if(snapshot.value as! String == "true"){ 
     self.view.makeToast("Signal received") 
     snapshot.ref.setValue("true") 
    } 
}) { print($0) }