Firebase数据库无法离线返回值

时间:2017-12-15 23:08:09

标签: ios swift firebase firebase-realtime-database offline

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

  1. 用户添加客户端(显示在主表视图中 - 正常工作)
  2. 在新添加的客户的详细视图中,他预约了他。约会在Client Detail ViewController的tableview中列出。
  3. 添加约会后,表格视图不会刷新,因为回拨不会调用。
  4. 在代码中:

    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)

    5. BTW,我在App Delegates Database.database().isPersistenceEnabled = true - 方法中设置了applicationDidLoad。 如果我在线添加客户端然后离线,那么它也可以。

1 个答案:

答案 0 :(得分:0)

Firebase支持的答案:

  

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

     

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