我正在开发使用Firebase数据库的应用,我还希望允许用户在他离线时添加条目。想象一下以下情况(一切离线;它在线完美运行):
在代码中:
navCont.child = userDB.child(entityNameClients).childByAutoId()
navCont.child?.setValue(post)
其中,post是具有客户价值的字典getUsersDBReference().child(entityNameAppointments).child(clientKey).observe(.value)
。没有调用回调(可能是因为其中没有元素)添加约会
var appointment:DatabaseReference
appointment = getUsersDBReference().child(entityNameAppointments).child(clientKey).childByAutoId()
appointment.setValue(appointmentDict)
不会调用2的回调( - >并且新视图不会刷新tableview)
BTW,我在App Delegates Database.database().isPersistenceEnabled = true
- 方法中设置了applicationDidLoad
。
如果我在线添加客户端然后离线,那么它也可以。
答案 0 :(得分:0)
Firebase支持的答案:
SDK尝试不使用“部分”数据触发Value事件。由于您只更新被观察位置的子节点,因此我们没有“完整”数据,因此不会触发观察者。如果SDK曾经拥有该节点的“完整”数据(例如,因为您覆盖了整个节点,或者因为您之前在线并获得了完整的数据),那么它会在您更新时触发事件。
一种解决方法是使用ChildAdded(和ChildChanged等)事件而不是Value。