Firebase数据库不会脱机返回值

问题描述 投票:2回答:1

我正在开发一个使用Firebase数据库的应用程序,我还希望允许用户在离线时添加条目。想象一下以下情况(一切离线;它在网上完美运行):

  1. 用户添加一个客户端(显示在主表视图中 - 工作)
  2. 在新近添加的客户的详细视图中,他预约了他。约会在Client Detail ViewController的tableview中列出。
  3. 添加约会时,不会刷新tableview,因为回调不会调用。

在代码中:

  1. navCont.child = userDB.child(entityNameClients).childByAutoId() navCont.child?.setValue(post)其中post是一个包含客户价值的字典
  2. 在详细视图控制器的viewDidLoad方法中,我调用以下代码:getUsersDBReference().child(entityNameAppointments).child(clientKey).observe(.value)。不调用回调(可能是因为其中没有元素)
  3. 添加约会 var appointment:DatabaseReference appointment = getUsersDBReference().child(entityNameAppointments).child(clientKey).childByAutoId() appointment.setValue(appointmentDict)
  4. 不调用2的回调( - >并且新约会不刷新tableview)

顺便说一下,我在App Delegates Database.database().isPersistenceEnabled = true-method中设置了applicationDidLoad。如果我在线添加客户端然后离线,那么它也可以。

ios swift firebase firebase-realtime-database offline
1个回答
0
投票

Firebase支持的答案:

SDK尝试不使用“部分”数据触发Value事件。由于您只更新被观察位置的子节点,因此我们没有“完整”数据,因此不会触发观察者。如果SDK曾经拥有该节点的“完整”数据(例如,因为您覆盖了整个节点,或者因为您之前在线并获得了完整的数据),那么它会在您更新时触发事件。

一种解决方法是使用ChildAdded(和ChildChanged等)事件而不是Value。

© www.soinside.com 2019 - 2024. All rights reserved.