如何等待Firebase状态更改?

时间:2020-07-20 01:11:53

标签: swift firebase firebase-realtime-database

当前,我有一个Firebase实时数据库,其中包含在线用户列表。

在我的iOS应用程序中,我具有一项功能,可从数据库加载在线用户的队列。

当有0位用户在线时,我想要发生的事情是让应用程序等待,直到Firebase状态更改并且用户在线,然后返回用户的ID(user.id)。

我的数据库的结构非常简单:

{
  "online" : {
    "user1" : val1,
    "user2" : val2,
    "user3" : val3
    }
}

我正在尝试实现的功能:

let rtdbRef = Database.database().reference(withPath: "online")
userQueue: [String] = [] 

func nextUserInQueue() -> String {
    
    // once we exhaust our queue, load up more users
    if (self.userQueue.count == 0) {
        // need to wait until a user goes online, then put them in the queue
    }
}

1 个答案:

答案 0 :(得分:2)

根据我几年前写的gist,您可以使用以下方法等待节点具有值:

var handle: UInt!
handle = rtdbRef.observeEventType(.Value, withBlock: { snapshot in
    if snapshot.exists() {
        print("The value is now \(snapshot.value)")
        ref.removeObserverWithHandle(handle)
    }
})