gpt4 book ai didi

swift - 在法庭上添加或删除子项的持久性?

转载 作者:行者123 更新时间:2023-11-30 11:06:07 25 4
gpt4 key购买 nike

我正在开发一个交通应用程序。这个想法是司机可以接受客户已经要求的服务。因此,当驱动程序从客户端接受服务时,它将从 firebase 数据库上的“可分析服务”中删除该服务,我有一个观察者在服务被删除时监听并告诉客户端其服务已被占用,效果非常好。

现在想象一下这种情况,司机接受了服务,但客户端当时没有连接到互联网,所以他不会“监听”被删除的 child ,每当他再次连接时,他不会知道其服务已被占用。我知道 firebase 提供“持久性”,但我不太确定如何在这种特定情况下使用它。

这是我的代码的一部分:

RefConductores.child(IDUsuarioActual).child("Servicios Tomados").observe(.childAdded)
{ (snapshot) in

let key = snapshot.value as? String

if key != nil
{

if let i = MisServicios.Instancia.VectorMisServicios.index(where: { $0.Key == key })
{
MisServicios.Instancia.VectorMisServicios.remove(at: i)
Alertas.Instancia.CrearNotificaciones(Tipo: 1)
}

MisServicios.Instancia.CargarMisServicios(IDServicio: key!)
}

}

一切正常,没有错误。我想弄清楚的是当用户没有互联网连接时如何使其工作。当司机接受服务时(由于司机的手机),在客户应用程序中(在客户的手机中),它将执行所提供的代码(如果客户有正确的互联网连接,则可以完美工作)。我的问题是:想象一下客户端没有互联网连接,他将无法收听“childAdded”,当他再次连接到互联网时, child 将已经在“Servicios Tomados”节点上,但他永远不会知道它。我该如何解决这个问题?

谢谢大家

最佳答案

Firebase 数据库同步状态,但不一定同步所有状态更改。

如果您想向客户传达已乘坐行程的事实,您应该将已乘坐行程的事实存储到数据库中。因此,您不仅需要(仅)从“可分析服务”中删除乘车,还需要将信息存储在“乘坐的乘车”节点中。

关于swift - 在法庭上添加或删除子项的持久性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52703775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com