这将是 Swift 3 中 addValueEventListener 的等效命令
Posted
技术标签:
【中文标题】这将是 Swift 3 中 addValueEventListener 的等效命令【英文标题】:Which would be the equivalent command for addValueEventListener in Swift 3 【发布时间】:2017-06-28 07:07:11 【问题描述】:我正在使用 Firebase 和 Swift 3,我想知道如何将其从我的 android 应用程序转换为 Swift 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
【问题讨论】:
代码有什么问题? 【参考方案1】:您正在使用 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)
【讨论】:
以上是关于这将是 Swift 3 中 addValueEventListener 的等效命令的主要内容,如果未能解决你的问题,请参考以下文章
无法弄清楚 Swift 中 AudioQueueDispose 的用法