我的应用使用Firebase同步和恢复数据。我使用setValue:withCompletionBlock:
方法来插入,更新和删除Firebase对象。这种方法被称为每当有CoreData保存,从而同步我的所有本地更改火力Firebase持久性,清除Firebase缓存
- (void) setValue:(id)value withCompletionBlock:(void (^)(NSError* error, Firebase* ref))block;
现在同步上传的所有本地数据火力点,同时恢复与火力数据替换本地数据。
- (void) observeSingleEventOfType:(FEventType)eventType withBlock:(void (^)(FDataSnapshot* snapshot))block;
我观察FEventTypeValue
并使用FDataSnapshot
来从火力地堡数据,并恢复本地数据。
因此,一切都适用于我,直到我将persistence
设置为Firebase。
[Firebase setOption:@"persistence" to:@YES];
现在,当persistence
是,当我更新,说对象插入到火力地堡,然后恢复,数据恢复插入前。即新插入的对象未被恢复。但是,如果我再次恢复,插入的对象被恢复。当一个对象被删除时会发生同样的事情。当我第一次恢复时,删除的对象会再次出现,当我再次恢复时会消失。我可以看到Firebase对象是通过Firebase数据视图正确插入和/或删除的。
我不知道我在做什么错在这里。我恢复时只有问题。我认为Firebase缓存导致了这个还原问题。我正在考虑在恢复之前清除Firebase缓存。我的问题是
- 在还原之前清除缓存是一个很好的方法吗?
- 如果是,如何清除Firebase缓存?
- 如果不是,你能否建议我恢复数据的最佳方法。
这仍然是这种情况?这似乎是我遇到这个问题。检查用户名是否存在,如果不存在,则创建用户。如果用户注销并尝试使用相同的用户名创建新用户,则它将工作,因为缓存不会更新。 –
我一直是Firebase的忠实粉丝。但为此,我必须坦白地说这是一个很大的限制。 Firebase应在方法fetchNewData:Bool中添加一个新参数。意料之中的预期行为不是预期的行为。在很多情况下,这可能会失败,例如分页。我们大多数人不会在分页时观察页面的值,否则上一页可能会刷新,而分页概念本身(这是为了减少数据传输)变得无用,因为观察方法不断刷新前一页数据,并且我们也无法使用'removeObserver' –
对此有任何修正? – Relm