Ios Firebase observeEventType.childAdded不';我不能如约工作
当我从我的viewcontroller中调用此观察函数时,Ios Firebase observeEventType.childAdded不';我不能如约工作,ios,swift,firebase,firebase-realtime-database,observers,Ios,Swift,Firebase,Firebase Realtime Database,Observers,当我从我的viewcontroller中调用此观察函数时,.childadded会立即返回一个已经存储的对象,而不是刚刚添加的bin,就像一样。childadded会怀疑的那样 func observe(callback: RiderVC){ let ref = DBProvider.Instance.dbRef.child("rideRequests") ref.observe(DataEventType.childAdded) { (snapshot: DataSnapsho
.childadded
会立即返回一个已经存储的对象,而不是刚刚添加的bin,就像一样。childadded
会怀疑的那样
func observe(callback: RiderVC){
let ref = DBProvider.Instance.dbRef.child("rideRequests")
ref.observe(DataEventType.childAdded) { (snapshot: DataSnapshot) in
if let data = snapshot.value as? NSDictionary {
let drive = cabRide(ritID: ritID, bestemming: bestemming,
vanafLocatie: vanaf, taxiID: taxiID, status: status)
print(drive)
callback.alertForARide(title: "Wilt u deze rit krijgen?", message: "Van: \(vanaf), Naar: \(bestemming)", ritID: ritID)
}
}
}
当我使用.childchanged
尝试此函数时,我只会在它像预期那样更改时收到警报,但在执行.chiladded
时,它只会从数据库中获取所有请求,并且这些请求已经存在
当我添加新请求时,它也会发出警报。所以它是有效的,但我如何才能摆脱未添加和已经存在的请求呢
有人知道这个缺陷吗?这完全按照承诺工作。从文件中: 检索项目列表或侦听项目列表中的添加项。 此事件针对每个现有子级触发一次,然后再次触发 每次将新子级添加到指定路径时。听众是 传递了包含新子级数据的快照 这在一开始可能看起来很奇怪,但这通常是大多数开发人员想要的,因为这基本上是一种从数据库中的特定分支请求所有数据的方法,即使将来会向其中添加新项 如果你想让它按照你所描述的方式工作,在你的应用程序启动后,你只能在数据库中获得新的项目,你需要自己做一些工作。首先,您需要向要添加到数据库的对象添加时间戳。然后,您将需要执行某种调用,其中您要求通过这些时间戳查询数据库。它可能看起来像这样:
myDatabaseRef.queryOrdered(byChild: "myTimestamp").queryStarting(atValue: <currentTimestamp>)
myDatabaseRef.queryOrdered(byChild:“myTimestamp”).QueryStart(atValue:)
祝你好运