2017-02-10 82 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) }