这将是Swift 3中addValueEventListener的等效命令

时间:2017-02-10 03:08:33

标签: android ios firebase swift3 firebase-realtime-database

我正在使用Firebase和Swift 3,我想知道如何将这个从我的Android应用程序转换为Swift 3:

decimal?

我尝试了这个,但它没有用:

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) {

            }
        });

1 个答案:

答案 0 :(得分:0)

您正在使用addValueEventListener来监听更改,而在Swift中您使用了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) }